import java.awt.Graphics;
import java.applet.Applet;
import java.awt.Color;
import java.awt.*;
public class xgcli extends java.applet.Applet{
  Point[] p = new Point[100];
  Color col1,col2,col3;
  double piaw=3.14159265358979;
  int Naw,n;
  int takaaw,habaaw,orikaeshi;
  int kaw,iaw,jaw,i;
  String NS,habaS,takaS;
  double Nd,takad,habad,xx,yy,lto,th,xmax;
  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==20){
      Nd=4+46*randaw();
    }
    habaaw=(int)habad;
    takaaw=(int)takad;
    Naw=(int)Nd;
  }
  double x1aw[]=new double[100];
  double y1aw[]=new double[100];
  public double jouaw(double aaw,double baw){
    double jou1aw;
    jou1aw=Math.pow(aaw,baw);
    return jou1aw;
  }
  public double arcsinaw(double atasw){
    double artn1saw;
    artn1saw=Math.asin(atasw);
    return artn1saw;
  }
  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 double kosaw(double kosainaw){
    double kos1aw;
    kos1aw=Math.cos(kosainaw);
    return kos1aw;
  }
  public double d(double d1,double d2,double d3,double d4){
    double dw;
    dw=jouaw(jouaw(d3-d1,2.0)+jouaw(d4-d2,2.0),0.5);
    return dw;
  }
  void heapaw(double he1aw[],double he2aw[],double he3aw[],int NNaw){
    int kkaw,kksaw,iiaw,jjaw,mmaw;
    double b1aw,b2aw,b3aw,c1aw,c2aw,c3aw;
    kksaw=(int)(NNaw/2);
    for(kkaw=kksaw;kkaw>=1;kkaw--){
      iiaw=kkaw;
      b1aw=he1aw[iiaw-1];b2aw=he2aw[iiaw-1];b3aw=he3aw[iiaw-1];
      while(2*iiaw<=NNaw){
        jjaw=2*iiaw;
        if(jjaw+1<=NNaw){
          if(he1aw[jjaw-1]<he1aw[jjaw]){
            jjaw++;
          }
        }
        if(he1aw[jjaw-1]<=b1aw){
          break;
        }
        he1aw[iiaw-1]=he1aw[jjaw-1];he2aw[iiaw-1]=he2aw[jjaw-1];he3aw[iiaw-1]=he3aw[jjaw-1];
        iiaw=jjaw;
      }//wend
      he1aw[iiaw-1]=b1aw;he2aw[iiaw-1]=b2aw;he3aw[iiaw-1]=b3aw;
    }//next kk
    for(mmaw=NNaw-1;mmaw>=1;mmaw--){
      c1aw=he1aw[mmaw];c2aw=he2aw[mmaw];c3aw=he3aw[mmaw];
      he1aw[mmaw]=he1aw[0];he2aw[mmaw]=he2aw[0];he3aw[mmaw]=he3aw[0];
      iiaw=1;
      while(2*iiaw<=mmaw){
        kkaw=2*iiaw;
        if(kkaw+1<=mmaw){
          if(he1aw[kkaw-1]<=he1aw[kkaw]){
            kkaw++;
          }
        }
        if(he1aw[kkaw-1]<=c1aw){
          break;
        }
        he1aw[iiaw-1]=he1aw[kkaw-1];he2aw[iiaw-1]=he2aw[kkaw-1];he3aw[iiaw-1]=he3aw[kkaw-1];
        iiaw=kkaw;
      }//wend
      he1aw[iiaw-1]=c1aw;he2aw[iiaw-1]=c2aw;he3aw[iiaw-1]=c3aw;
    }//next mm
  }
  public void paint(java.awt.Graphics g){
    g.setColor(col1);
    g.fillRect(1,1,habaaw,takaaw);
    g.setColor(col2);
    Point old,current;
    Naw=n;
    for(kaw=1;kaw<=Naw;kaw++){
      x1aw[kaw-1]=p[kaw-1].x+Math.cos(kaw*1.1)+kaw*0.0001;
      y1aw[kaw-1]=p[kaw-1].y+Math.sin(kaw*1.1)+kaw*0.001;
      g.fillOval((int)x1aw[kaw-1]-2,(int)y1aw[kaw-1]-2,4,4);
    }
    g.setColor(col3);
    heapaw(x1aw,y1aw,x1aw,Naw);
    for(i=0;i<Naw-1;i++){
        g.drawLine((int)x1aw[i],(int)y1aw[i],(int)x1aw[i+1],(int)y1aw[i+1]);
    }//next i
    g.setColor(col2);
    g.drawString("N="+Naw,15,15);
  }
  public boolean mouseDown(Event evt, int x, int y) {
    if(n<50){
      p[n] = new Point(x,y); n++;
    }
    else{
      n=0;
    }
    repaint();
    return true;
  }
}
