      program repeat
      implicit none
      integer katm,natm,ia,ii,jj,ntyp,it,kk
      parameter(katm=3000)
      real*8 cps(katm,3),dum1,dum2,altv(3,3),b2ang,atomn(5)
     & ,aaa,bbb,ccc,alpha,beta,gamma,pi,temp,pos(katm,3)
      parameter(b2ang= 0.529177d0
     &         ,pi   = 3.14159265358979323846264338327950d0)
      integer iii(katm,3),idum1
      character*1 dummy
      character*2 type(katm)
      integer,parameter:: is=-1 , ie= 1
      integer,parameter:: js=-1 , je= 1
      integer,parameter:: ks= 0 , ke= 0

      altv = 0.d0

1     format(a1)

      read(5,*) idum1
      read(5,*) dum1,dum2,ntyp,natm
      read(5,1) dummy
      if(idum1.eq.1) then
        read(5,1) dummy
        read(5,*) altv(1,1),altv(2,1),altv(3,1)
        read(5,*) altv(1,2),altv(2,2),altv(3,2)
        read(5,*) altv(1,3),altv(2,3),altv(3,3)
      else if(idum1.eq.0) then
        read(5,*) aaa,bbb,ccc,alpha,beta,gamma
        alpha = alpha/180.d0*pi
        beta  = beta/180.d0*pi
        gamma = gamma/180.d0*pi
        altv(1,1) = aaa
        altv(1,2) = bbb*cos(gamma)
        altv(2,2) = bbb*sin(gamma)
        temp=(cos(alpha)-cos(beta)*cos(gamma))/sin(gamma)
        altv(1,3) = ccc*cos(beta)
        altv(2,3) = ccc*temp
        altv(3,3) = sqrt(ccc**2-altv(1,3)**2+altv(2,3)**2)
      endif

      read(5,1) dummy
      read(5,*) idum1

      if(idum1.eq.1) then
        do ia=1,natm
        read(5,*) cps(ia,1),cps(ia,2),cps(ia,3)
     &            ,iii(ia,1),iii(ia,2),iii(ia,3)
        end do
       else if(idum1.eq.0) then
        read(5,*) (pos(ia,1),pos(ia,2),pos(ia,3)
     &            ,iii(ia,1),iii(ia,2),iii(ia,3)
     &            ,ia=1,natm)
        do ia=1,natm
         cps(ia,1) = altv(1,1)*pos(ia,1)
     &              +altv(1,2)*pos(ia,2)
     &              +altv(1,3)*pos(ia,3)
         cps(ia,2) = altv(2,1)*pos(ia,1)
     &              +altv(2,2)*pos(ia,2)
     &              +altv(2,3)*pos(ia,3)
         cps(ia,3) = altv(3,1)*pos(ia,1)
     &              +altv(3,2)*pos(ia,2)
     &              +altv(3,3)*pos(ia,3)
        enddo
      endif

      do it=1,ntyp
       read(5,*) atomn(it)
c      write(6,*) atomn(it)
      enddo

      do ia=1,natm
       if(      int(atomn(iii(ia,3))).eq. 1) then
         type(ia) = 'H '
        else if(int(atomn(iii(ia,3))).eq. 2) then
         type(ia) = 'He'
        else if(int(atomn(iii(ia,3))).eq. 3) then
         type(ia) = 'Li'
        else if(int(atomn(iii(ia,3))).eq. 4) then
         type(ia) = 'Be'
        else if(int(atomn(iii(ia,3))).eq. 5) then
         type(ia) = 'B '
        else if(int(atomn(iii(ia,3))).eq. 6) then
         type(ia) = 'C '
        else if(int(atomn(iii(ia,3))).eq. 7) then
         type(ia) = 'N '
        else if(int(atomn(iii(ia,3))).eq. 8) then
         type(ia) = 'O '
        else if(int(atomn(iii(ia,3))).eq. 9) then
         type(ia) = 'F '
        else if(int(atomn(iii(ia,3))).eq.10) then
         type(ia) = 'Ne'
        else if(int(atomn(iii(ia,3))).eq.11) then
         type(ia) = 'Na'
        else if(int(atomn(iii(ia,3))).eq.12) then
c        type(ia) = 'Mg'
         type(ia) = 'Si'
        else if(int(atomn(iii(ia,3))).eq.13) then
         type(ia) = 'Al'
        else if(int(atomn(iii(ia,3))).eq.14) then
         type(ia) = 'Si'
        else if(int(atomn(iii(ia,3))).eq.15) then
         type(ia) = 'P '
        else if(int(atomn(iii(ia,3))).eq.16) then
         type(ia) = 'S '
        else if(int(atomn(iii(ia,3))).eq.17) then
         type(ia) = 'Cl'
        else if(int(atomn(iii(ia,3))).eq.18) then
         type(ia) = 'Ar'
        else if(int(atomn(iii(ia,3))).eq.19) then
         type(ia) = 'K '
        else if(int(atomn(iii(ia,3))).eq.20) then
         type(ia) = 'Ca'
        else if(int(atomn(iii(ia,3))).eq.21) then
         type(ia) = 'Sc'
        else if(int(atomn(iii(ia,3))).eq.22) then
         type(ia) = 'Ti'
        else if(int(atomn(iii(ia,3))).eq.26) then
         type(ia) = 'Fe'
        else if(int(atomn(iii(ia,3))).eq.29) then
         type(ia) = 'Cu'
        else if(int(atomn(iii(ia,3))).eq.30) then
         type(ia) = 'Zn'
        else if(int(atomn(iii(ia,3))).eq.45) then
         type(ia) = 'Rh'
        else if(int(atomn(iii(ia,3))).eq.46) then
         type(ia) = 'Pd'
        else if(int(atomn(iii(ia,3))).eq.31) then
         type(ia) = 'Ga'
        else if(int(atomn(iii(ia,3))).eq.57) then
         type(ia) = 'La'
        else if(int(atomn(iii(ia,3))).eq.79) then
         type(ia) = 'Si'
        else
         type(ia) = 'Si'
       endif
      enddo


      write(6,*) natm*(ie-is+1)*(je-js+1)*(ke-ks+1)
      write(6,*) ' '

c     write(6,98)   altv(1,1)*b2ang, altv(2,2)*b2ang, altv(3,3)*b2ang
  98  format(' ',3f20.10)

      do ii=is,ie
       do jj=js,je
       do kk=ks,ke
        write(6,99) (type(ia),(cps(ia,1)+dble(ii)*altv(1,1)
     &                                  +dble(jj)*altv(2,1)
     &                                  +dble(kk)*altv(3,1))*b2ang
     &                       ,(cps(ia,2)+dble(ii)*altv(1,2)
     &                                  +dble(jj)*altv(2,2)
     &                                  +dble(kk)*altv(3,2))*b2ang
     &                       ,(cps(ia,3)+dble(ii)*altv(1,3)
     &                                  +dble(jj)*altv(2,3)
     &                                  +dble(kk)*altv(3,3))*b2ang
     &                                         ,ia=1,natm         )
       enddo
       enddo
      enddo

  99  format(' ',a2,3f20.10)

      end
