여러 가지 블록으로 직사각형을 빈틈없이 채우려고 한다. 1×N 블록, 2×N 블록, ..., N×N 블록이 종류마다 무한히 있다.
이 블록으로 세로가 N이고 가로가 M인 직사각형을 채운다. 블록끼리 겹칠 수 없고 직사각형 밖으로 나갈 수도 없다. 블록은 90도 돌려서 놓을 수 있다. 즉 k×N 블록은 세로 k 가로 N으로 놓을 수도 있고, 세로 N 가로 k로 놓을 수도 있다.
채우는 방법이 모두 몇 가지인지 세어 1999로 나눈 나머지를 구하여라. 어느 한 칸이라도 덮는 블록의 놓인 자리가 다르면 서로 다른 방법이다.