import java.awt.*; import java.applet.*; import java.lang.Math; class p600 { private static int j=0, sj = 0, n=0; private static float [][] verts = new float[600][4]; private static int[] edgesF = new int[1200], edgesT = new int[1200]; private static float sqt5 = (float)Math.sqrt(5), tau = (sqt5+1)/2; private static float edge2 = (float)(8/(sqr(tau*tau))), eps = 1.e-5f; private static void pl5(float a, float b, float c, float d) {verts[j][0] = a; verts[j][1] = b; verts[j][2] = c; verts[j++][3] = d;} private static void pl4(float a, float b, float c, float d) {pl5(a, b, c, d); pl5(-a, b, c, -d);} private static void pl3(float a, float b, float c, float d) {pl4(a, b, c, d); pl4(-a, b, -c, d);} private static void pl2(float a, float b, float c, float d) {pl3(a, b, c, d); pl3(-a, -b, c, d);} private static void pl1(float a, float b, float c, float d) {pl2(a, b, c, d); pl2(d, a, b, c); pl2(c, d, a, b); pl2(b, c, d, a);} private static void pl0(float a, float b, float c) {pl1(a, a, b, c); pl1(a, a, c, b); pl1(a, b, a, c);} private static void ply(float a, float b) {pl5(a, b, b, b); pl5(b, a, b, b); pl5(b, b, a, b); pl5(b, b, b, a);} private static void plx(float a, float b) {pl1(a, a, a, b);} private static void plz(float a, float b, float c) {pl1(a, b, c, 0); pl1(b, c, a, 0); pl1(c, a, b, 0);} private static float sqr(float x){return x*x;} private static void c(int q){ if(sj + q != j) System.out.println(n+": sj="+sj+" q="+q+" j="+j); ++n; sj=j;} private static void depict(String m, int i, int j, float el2) {System.out.println(m+i+" "+j); System.out.println("edge2="+edge2+" el2="+el2+" diff="+(edge2-el2)); for(int q=0; q<4; ++q) System.out.println("vs= "+verts[i][q]+" "+verts[j][q]);} static void setup() {if(j>0) return; if(A < Bx*Math.sqrt(2) || (1-A) < Bx*Math.sqrt(2)) System.out.println("Error: Color overflow"); float sig = (3*sqt5 + 1)/2; int edcnt = 0; plx(sqt5, 1); c(32); pl0(tau*tau, sqt5/tau, 1/tau); c(96); plx(1/tau, sig); c(32); pl0(1/(tau*tau), tau*sqt5, tau); c(96); plx(tau, -(3*sqt5 - 1)/2); c(32); pl0(1,-3,sqt5); c(96); ply(4,0); ply(-4,0); c(8); pl2(2,2,2,2); pl2(-2,2,2,2); c(16); plz(2*tau, 2, 2/tau); plz(2*tau, 2/tau, 2); c(192); bar: for(int i=0; i<600; ++i) {float r2=0; for(int m=0; m<4; ++m) r2 += sqr(verts[i][m]); if(r2<16-eps | r2> 16+eps) {System.out.println ("Radius2 of point "+i+" is "+r2); break bar;}} futz: for(int i=0; i<600; ++i) fuz: for(int j=i+1; j<600; ++j) {float el2 = 0; for(int m=0; m<4; ++m) {el2 += sqr(verts[i][m]-verts[j][m]); if(el2 > edge2 + eps) continue fuz;} if(el2