
   Integer :: M,K !,N(K),Lgr(Nspl),LG(Nspl)
   Integer, Allocatable :: N(:),LG(:), Lg1(:)
   Real, Allocatable :: Dat(:,:), X(:), F(:,:), Xdat(:,:), Xtmp(:)
   Integer :: i,j,i1,i2,j1, Nspl
   Real :: tmp, Miss=-99.0
   

   Open (1,file="discr.txt",status="old")
   Read(1,*) K,M
   Allocate (N(k))
   rewind (1)
   Read(1,*) K,M, (N(i),i=1,K)
   Nspl=0
   Do i=1,K; Nspl=Nspl+N(i); Enddo

   Allocate (Dat(Nspl,M),X(M*Nspl),LG(Nspl),F(K,M+1))
   Allocate (Xdat(Nspl,K),Lg1(Nspl))
   Allocate (Xtmp(Nspl))

   Do i=1,Nspl
      Read (1,*) (Dat(i,j),j=1,M)
   Enddo

   ii=0
   Do i=1,K
      if (i==1) then 
         i1=1; i2=N(i)
      else 
         i1=i2+1; i2=i2+N(i); 
      endif
      Do j=1,M
         Do it=i1,i2
            ii=ii+1;
            X(ii)=Dat(it,j)
            print*,ii,X(ii)
         Enddo
      Enddo
   Enddo
   ! For testing:
   i1=1; i2=N(1)
   Do i=1,K
      Do j=1,M
         Xtmp(1:N(i))=Dat(i1:i2,j)
         print*,"Mean of var ",j," group ",i," : ",Ave(Xtmp,N(i),Miss)
      Enddo
      i1=i2+1; i2=i2+N(i)
   Enddo
   Do j=1,M
      Xtmp(1:Nspl)=Dat(1:Nspl,j)
      print*,"Mean of var ",j," : ",Ave(Xtmp,Nspl,Miss)
   Enddo

   Call My_Discr (X,M,K,N,Nspl,F,LG)

   Do j=1,K
      Do i=1,Nspl
         tmp=0
         Do i1=2,M+1
            tmp=tmp+F(j,i1) * Dat(i,i1-1)
         Enddo
         Xdat(i,j)=tmp + F(j,1)
      Enddo
   Enddo
   Do i=1,Nspl
      Lg1(i)=Jmax(Xdat(i,1:K),K,Miss)
   Enddo

   Do i=1,K
      print"(I3,30F8.3)",i,(F(i,j),j=1,M+1)
   Enddo

   i1=0
   Do i=1,K
      Do j=1,N(i)
         i1=i1+1
         print*,i1,j,LG(i1),Lg1(i1),Xdat(i1,1:K)
      Enddo
   Enddo
   CONTAINS

   Integer Function Jmax (X,N,Miss)
      Integer :: N,i,j
      Real :: X(N),tmp,Miss

      tmp=-999999.
      Do i=1,N
         if (X(i)>tmp) then
            tmp=X(i); j=i
         endif
      Enddo
      Jmax = j
   End Function Jmax
   !------------------------
   Include "/home/tanpv/Mylibs/Ave.f90"
   END
   Include "Sub_Discr.f90"
