public static void  banbks(double [][] a,  int  m1,  int m2,  double [][] al,  int []  indx,  double [] b)
{
    int i,j,k,l,mm;
    double  dum;

    int n = a.length;
    mm = m1+m2+1;
    l = m1;
    for (k=0; k<n; k++) {
        j = indx[k]-1;
        if (j!=k) swap(b, k, j);
        if (l<n) l++;
        for (j=k+1; j<l; j++) b[j] -= al[k][j-k-1]*b[k];
   }
	l=1;
	for (i=n-1;i>=0;i--) {
		dum=b[i];
		for (k=1;k<l;k++) dum -= a[i][k]*b[k+i];
		b[i]=dum / a[i][0];
		if (l<mm)  l++;
	}
}