program main implicit none integer::N,i,M,j,k integer::total integer,allocatable::tuple(:,:) character*32::cformat='( (i0,1x,i0,1x,i0))' data total/0/ read *,N M = N/3 do i=1, M total = total + (N-i)/2-i+1 end do allocate(tuple(3,total)) total = 1 do i=1, M do j=i,(N-i)/2 tuple(1,total)=i tuple(2,total)=j tuple(3,total)=N-i-j total = total + 1 end do end do print '(i0,1x,i0,1x,i0)', tuple end program main