program main implicit none integer*8::DA,DB integer*8,allocatable::a(:) integer::i read *,DA allocate(a(0:DA)) read *,a do i=DA, 3, -1 a(i-2) = a(i-2) + a(i) end do do i=2, 0, -1 if(a(i).ne.0) exit end do print '(i0)',MAX(i,0) call aprinter(a(0:MAX(i,0))) contains subroutine aprinter(array) integer*8::array(:) character*32::cformat='(i0, (1x,i0))' write(cformat(5:9),'(i0)'),size(array) write(*,cformat) array end subroutine aprinter end program main