program main implicit none integer*8::N,K,i,j,count,tmp integer*8,allocatable::D(:) data count/0/ read *,N,K allocate(D(N)) read *,D do i=1, N-1 if(D(i).ne.i) then tmp = D(i) D(i) = D(tmp) D(tmp) = tmp count = count + 1 end if end do if(count .gt. K ) then print '("NO")' else if(MOD(count,2).eq.MOD(K,2)) then print '("YES")' else print '("NO")' end if ! call aprinter(D) 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