import java.awt.Graphics;
import java.applet.Applet;
import java.awt.Color;
public class ybspl extends java.applet.Applet{
  Color col1,col2,col3;
  double px,py,nt,ti;
  double piaw=3.14159265358979;
  int q,phi,a;
  int Naw;
  int takaaw,habaaw,orikaeshi;
  int kaw,iaw,jaw,i;
  String NS,habaS,takaS;
  double hsum,x,y,al,t;
  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.green;
    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+26*randaw();
    }
    habaaw=(int)habad;
    takaaw=(int)takad;
    Naw=(int)Nd;
  }
  double x1aw[]=new double[100];
  double y1aw[]=new double[100];
  double w1aw[]=new double[100];
  double x2aw[]=new double[100];
  double y2aw[]=new double[100];
  double w2aw[]=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 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;
  }

  public double nqt(int qq,double tt){
    double re,re1,re2,re3;
    if(qq==1){
        re=0.0;
        if(tt>-1.0 && tt<=0.0){
            re=tt+1.0;
        }
        if(tt>0.0 && tt<1.0){
            re=-tt+1.0;
        }
    }//qq==1
    else{
        re=0.0;
        if(tt>-(qq+1.0)/2.0 && tt<(qq+1.0)/2.0){
            re1=1.0/qq;
            re2=(tt+(qq+1.0)/2.0)*nqt(qq-1,tt+0.5);
            re3=((qq+1.0)/2.0-tt)*nqt(qq-1,tt-0.5);
            re=re1*(re2+re3);
        }
    }
    return re;
  }

  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);
    q=(int)(randaw()*7)+1;
    g.setColor(col2);
    for(kaw=0;kaw<Naw;kaw++){
      x1aw[kaw]=randaw()*(habaaw-30)+15;
      y1aw[kaw]=randaw()*(takaaw-30)+15;
    }
    heapaw(y1aw,x1aw,x1aw,Naw);
    for(kaw=0;kaw<Naw;kaw++){
      xaw[kaw]=(int)x1aw[kaw];
      yaw[kaw]=(int)y1aw[kaw];
      g.fillOval(xaw[kaw]-5,yaw[kaw]-5,10,10);
      g.drawString(""+(kaw+1),xaw[kaw]+6,yaw[kaw]);
    }
    phi=(int)(q/2);
    g.setColor(col3);
    for(t=-phi+1.0;t<=Naw+phi;t=t+0.002){
        x=0.0;
        y=0.0;
        for(kaw=-2*phi+1;kaw<=Naw+2*phi;kaw++){
            ti=t-kaw;
            if(kaw<1){
                px=x1aw[0];
                py=y1aw[0];
            }
            if(kaw>Naw){
                px=x1aw[Naw-1];
                py=y1aw[Naw-1];
            }
            if(kaw>0 && kaw<=Naw){
                px=x1aw[kaw-1];
                py=y1aw[kaw-1];
            }
            x=x+nqt(q,t-kaw)*px;
            y=y+nqt(q,t-kaw)*py;
        }
        g.drawLine((int)(x-.5),(int)y,(int)(x+.5),(int)y);
        g.drawLine((int)x,(int)(y-.5),(int)x,(int)(y+.5));
    }

    g.setColor(col2);
    g.drawString("N="+Naw,15,15);
    g.drawString("q="+q,15,30);
  }
}