subroutine sreadV_IC(pname,X,Y1,Y2,Y3,Y4)
integer :: i,Np
character(len=*) :: pname
integer,dimension(:) :: X
complex(8),dimension(size(X)) :: Y1
complex(8),dimension(size(X)),optional :: Y2,Y3,Y4
real(8),allocatable,dimension(:,:) :: reY,imY
Np=size(X)
open(719,file=adjustl(trim(pname)))
if(present(Y4))then
allocate(reY(4,size(X)),imY(4,size(X)))
do i=1,Np
read(719,"(I15,8(F21.12))")X(i),reY(1,i),imY(1,i),reY(2,i),imY(2,i),reY(3,i),imY(3,i),reY(4,i),imY(4,i)
enddo
Y1=cmplx(reY(1,:),imY(1,:),8)
Y2=cmplx(reY(2,:),imY(2,:),8)
Y3=cmplx(reY(3,:),imY(3,:),8)
Y4=cmplx(reY(4,:),imY(4,:),8)
elseif(present(Y3))then
allocate(reY(3,size(X)),imY(3,size(X)))
do i=1,Np
read(719,"(I15,6(F21.12))")X(i),reY(1,i),imY(1,i),reY(2,i),imY(2,i),reY(3,i),imY(3,i)
enddo
Y1=cmplx(reY(1,:),imY(1,:),8)
Y2=cmplx(reY(2,:),imY(2,:),8)
Y3=cmplx(reY(3,:),imY(3,:),8)
elseif(present(Y2))then
allocate(reY(2,size(X)),imY(2,size(X)))
do i=1,Np
read(719,"(I15,4(F21.12))")X(i),reY(1,i),imY(1,i),reY(2,i),imY(2,i)
enddo
Y1=cmplx(reY(1,:),imY(1,:),8)
Y2=cmplx(reY(2,:),imY(2,:),8)
else
allocate(reY(1,size(X)),imY(1,size(X)))
do i=1,Np
read(719,*)X(i),reY(1,i),imY(1,i)
enddo
Y1=cmplx(reY(1,:),imY(1,:),8)
endif
close(719)
end subroutine sreadV_IC