import java.io.*;

class SCO10B2
{
      
  public static double[][] pivotlugauss(double a[][])
  {
  double buyuk;
  double dummy=0;
  //gauss eleme
  int i,j,k,p,ii,jj;
  int n=a.length;	  
  int m=a[0].length;
  int o=m-n;
  if(m <= n) System.out.println("hata yanlış matris boyutu"); 
  double x[][]=new double[n][o];
  double carpan=0;
  double toplam=0;
  //gauss eleme
  //System.out.println("Orijinal Matris :\n"+Matrix.toString(a));
  for(k=0;k<(n-1);k++)
  {
    //pivotlama
	p=k;
	buyuk=Math.abs(a[k][k]);
	for(ii=k+1;ii<n;ii++)
	{  dummy=Math.abs(a[ii][k]);
	   if(dummy > buyuk) {buyuk=dummy;p=ii;}
	}
	if(p!=k)
	{ for(jj=k;jj<m;jj++)
	  { dummy=a[p][jj];
	    a[p][jj]=a[k][jj];
	    a[k][jj]=dummy;
	  }
	}
	for(i=k+1;i<n;i++)
    {  carpan=a[i][k]/a[k][k];
       a[i][k]=0;//bu deyim sadece elimine matrisin doğru değerlerini
                 //hesaplamak için konulmuştur 
       for(j=k+1;j<m;j++)
       {   a[i][j]-=carpan*a[k][j]; }
	}
  }
  //System.out.println("Elimine Matris :\n"+Matrix.toString(a));
  //geriye doğru yerine koyma  
  for(jj=0;jj<o;jj++)
  {
  x[n-1][jj]=a[n-1][n+jj]/a[n-1][n-1];	   
  for(i=n-2;i>=0;i--)
  {
    toplam=0;
    for(j=i+1;j<n;j++)
    {  toplam+=a[i][j]*x[j][jj];}
    x[i][jj]=(a[i][n+jj]-toplam)/a[i][i];
  }}
  return x;
  }
      
  public static void main(String args[]) throws IOException
  {
  //double a[][]={{3,1,0,1,1},{0,2,5,1,1},{2,2,2,2,2}};	  
  double a[][]=Text.readDouble_TextArea();
  double x[][]=pivotlugauss(a);
  Text.print(x,"Pivotlu Gauss eliminasyon metodu çözüm matrisi");
  }
}