import java.awt.Graphics;
import java.applet.Applet;
import java.awt.Color;
public class hila2 extends java.applet.Applet{
    Color col1,col2,col3;
    double piaw=3.14159265358979;
    int Naw;
    int takaaw,habaaw;
    int kaw,iaw,jaw;
    int gintQNum;
    int gintQ[]=new int[100];
    String NS,habaS,takaS;
    double Nd,takad,habad;
    double x1aw[]=new double[100];
    double y1aw[]=new double[100];
    double w1aw[]=new double[100];
    int xaw[]=new int[100];
    int yaw[]=new int[100];
    int waw[]=new int[100];
    double saw[]=new double[100];
    String sssaw[]=new String[100];

    public double dou(String dous){
        double dou1;
        dou1 = (Double.valueOf(dous)).doubleValue();
        return dou1;
    }
    public double randaw(){
        double rand1aw;
        rand1aw=Math.random();
        return rand1aw;
    }
    public void init(){
        col1=Color.black;
        col2=Color.yellow;
        col3=Color.white;
        takaS=getParameter("takap");
        habaS=getParameter("habap");
        NS=getParameter("Np");
        habad=dou(habaS);
        takad=dou(takaS);
        Nd=dou(NS);
        if(Nd==6){
            Nd=4+16*randaw();
        }
        habaaw=(int)habad;
        takaaw=(int)takad;
        Naw=(int)Nd;
    }
    public double jou(double aaw,double baw){
        double jou1aw;
        jou1aw=Math.pow(aaw,baw);
        return jou1aw;
    }

    public double artnaw(double ataw){
        double artn1aw;
        artn1aw=Math.atan(ataw);
        return artn1aw;
    }

    public double sainaw(double saiaw){
        double sain1aw;
        sain1aw=Math.sin(saiaw);
        return sain1aw;
    }
    public int fintE0j(int j){
        int inttempf;
        int i;
        inttempf=0;
        for(i=1;i<=j-1;i++){
            if(gintQ[i]==0){
                inttempf=inttempf+1;
            }
        }//i
        inttempf=(inttempf % 2);
        return inttempf;
    }//fintE0j

    public int fintE3j(int j){
        int inttempf;
        int i;
        inttempf=0;
        for(i=1;i<=j-1;i++){
            if(gintQ[i]==3){
                inttempf=inttempf+1;
            }
        }//i
        inttempf=(inttempf % 2);
        return inttempf;
    }//fintE3j

    public int fintDj(int j){
        int inttempf;
        inttempf=((fintE0j(j)+fintE3j(j)) % 2);
        return inttempf;
    }//fintE3j

    public double fdblCalcx(){
        double dbltempf;
        int j;
        dbltempf=0.0;
        for(j=1;j<=gintQNum;j++){
            if(gintQ[j]!=0){
                dbltempf=dbltempf+(300.0/jou(2.0,j))*jou(-1.0,fintE0j(j))*((1.0-fintDj(j))*gintQ[j]-1.0);
            }//gintQ(j)!=0
        }//j
        return dbltempf;
    }//fCalcx

    public double fdblCalcy(){
        double dbltempf;
        int j;
        dbltempf=0.0;
        for(j=1;j<=gintQNum;j++){
            if(gintQ[j]!=0){
                dbltempf=dbltempf+(300.0/jou(2.0,j))*jou(-1.0,fintE0j(j))*(1.0-fintDj(j)*gintQ[j]);
            }//gintQ(j)!=0
        }//j
        return dbltempf;
    }//fCalcy

    public void sDecOrder(int inti[]){
        int k,j,l;
        int intlabel[]=new int[100];
        intlabel[1]=0;
        intlabel[2]=0;
        intlabel[3]=0;
        intlabel[4]=0;
        intlabel[5]=0;
        intlabel[6]=0;
        intlabel[7]=0;
        for(j=1;j<=gintQNum;j++){
            for(k=1;k<=gintQNum;k++){
                if(j==k){
                    while(1<2){
                        l=(int)(randaw()*gintQNum)+1;
                        if(intlabel[l]==0){
                            gintQ[l]=inti[k];
                            intlabel[l]=1;
                            break;
                        }
                    }
                }
            }
        }//j
    }


    public void paint(java.awt.Graphics g){
        int inti1,inti2,inti3,inti4,inti5,inti6,inti7;
        int intdummyi1,j,k,intOrder;
        int intlabel[]=new int[100];
        int inti[]=new int[10];
        double dblOldx,dblOldy,dblNewx,dblNewy;
        g.setColor(col1);
        habaaw=500;
        takaaw=350;
        g.fillRect(1,1,habaaw,takaaw);
        g.setColor(col2);
        dblOldx=0.0;
        dblOldy=0.0;
        intOrder=(int)(randaw()*7)+1;
        
        for(inti1=0;inti1<4;inti1++){
            if(intOrder==1){
                gintQNum=1;
                inti[1]=inti1;
                sDecOrder(inti);
                dblNewx=fdblCalcx();
                dblNewy=fdblCalcy();
                g.drawLine((int)dblOldx*1+100,325-(int)dblOldy*1,(int)dblNewx*1+100,325-(int)dblNewy*1);
                dblOldx=dblNewx;
                dblOldy=dblNewy;
            }
            else{
                for(inti2=0;inti2<4;inti2++){
                    if(intOrder==2){
                        gintQNum=2;
                        inti[1]=inti1;
                        inti[2]=inti2;
                        sDecOrder(inti);
                        dblNewx=fdblCalcx();
                        dblNewy=fdblCalcy();
                        g.drawLine((int)dblOldx*1+100,325-(int)dblOldy*1,(int)dblNewx*1+100,325-(int)dblNewy*1);
                        dblOldx=dblNewx;
                        dblOldy=dblNewy;
                    }
                    else{
                        for(inti3=0;inti3<4;inti3++){
                            if(intOrder==3){
                                gintQNum=3;
                                inti[1]=inti1;
                                inti[2]=inti2;
                                inti[3]=inti3;
                                sDecOrder(inti);
                                dblNewx=fdblCalcx();
                                dblNewy=fdblCalcy();
                                g.drawLine((int)dblOldx*1+100,325-(int)dblOldy*1,(int)dblNewx*1+100,325-(int)dblNewy*1);
                                dblOldx=dblNewx;
                                dblOldy=dblNewy;
                            }
                            else{
                                for(inti4=0;inti4<4;inti4++){
                                    if(intOrder==4){
                                        gintQNum=4;
                                        inti[1]=inti1;
                                        inti[2]=inti2;
                                        inti[3]=inti3;
                                        inti[4]=inti4;
                                        sDecOrder(inti);
                                        dblNewx=fdblCalcx();
                                        dblNewy=fdblCalcy();
                                        g.drawLine((int)dblOldx*1+100,325-(int)dblOldy*1,(int)dblNewx*1+100,325-(int)dblNewy*1);
                                        dblOldx=dblNewx;
                                        dblOldy=dblNewy;
                                    }
                                    else{
                                        for(inti5=0;inti5<4;inti5++){
                                            if(intOrder==5){
                                                gintQNum=5;
                                                inti[1]=inti1;
                                                inti[2]=inti2;
                                                inti[3]=inti3;
                                                inti[4]=inti4;
                                                inti[5]=inti5;
                                                sDecOrder(inti);
                                                dblNewx=fdblCalcx();
                                                dblNewy=fdblCalcy();
                                                g.drawLine((int)dblOldx*1+100,325-(int)dblOldy*1,(int)dblNewx*1+100,325-(int)dblNewy*1);
                                                dblOldx=dblNewx;
                                                dblOldy=dblNewy;
                                            }
                                            else{
                                                for(inti6=0;inti6<4;inti6++){
                                                    if(intOrder==6){
                                                        gintQNum=6;
                                                        inti[1]=inti1;
                                                        inti[2]=inti2;
                                                        inti[3]=inti3;
                                                        inti[4]=inti4;
                                                        inti[5]=inti5;
                                                        inti[6]=inti6;
                                                        sDecOrder(inti);
                                                        dblNewx=fdblCalcx();
                                                        dblNewy=fdblCalcy();
                                                        g.drawLine((int)dblOldx*1+100,325-(int)dblOldy*1,(int)dblNewx*1+100,325-(int)dblNewy*1);
                                                        dblOldx=dblNewx;
                                                        dblOldy=dblNewy;
                                                    }
                                                    else{
                                                        for(inti7=0;inti7<4;inti7++){
                                                            gintQNum=7;
                                                            inti[1]=inti1;
                                                            inti[2]=inti2;
                                                            inti[3]=inti3;
                                                            inti[4]=inti4;
                                                            inti[5]=inti5;
                                                            inti[6]=inti6;
                                                            inti[7]=inti7;
                                                            sDecOrder(inti);
                                                            dblNewx=fdblCalcx();
                                                            dblNewy=fdblCalcy();
                                                            g.drawLine((int)dblOldx*1+100,325-(int)dblOldy*1,(int)dblNewx*1+100,325-(int)dblNewy*1);
                                                            dblOldx=dblNewx;
                                                            dblOldy=dblNewy;
                                                        }//inti7
                                                    }//intOrder==6
                                                }//inti6
                                            }//intOrder=5
                                        }//inti5
                                    }//intorder==4
                                }//inti4
                            }//intorder==3
                        }//inti3
                    }//intOrder==2
                }//inti2
            }//intOrder==1
        }//inti1
        g.drawString("Order="+intOrder,10,40);
    }//paint
}