두 대의 프린터 A와 B가 있다. 각 프린터에는 숫자가 적힌 카드가 장씩 들어 있으며, 각 프린터 안의 카드에는 부터 까지의 숫자가 정확히 한 번씩 적혀 있다.
프린터 A의 카드를 앞에서부터 읽은 순서를 , 프린터 B의 카드를 앞에서부터 읽은 순서를 이라 하자.
당신은 총 번의 작업을 수행하여 모든 카드를 출력한다. 한 번의 작업에서는 아직 카드가 남아 있는 프린터 하나를 선택하고, 그 프린터의 가장 앞에 있는 카드를 출력한 뒤 제거한다.
첫 번째 작업에는 전환이 발생하지 않는다. 두 번째 작업부터는 직전 작업에서 사용한 프린터와 다른 프린터를 사용하면 전환 횟수가 증가한다.
모든 작업이 끝나면 출력된 개의 숫자를 순서대로 이어 붙인 출력 수열을 얻는다. 같은 출력 수열이 서로 다른 작업 방법으로 만들어질 수 있다.
전환 횟수가 이하인 작업 방법으로 만들 수 있는 서로 다른 출력 수열의 개수를 구하여라. 어떤 출력 수열을 만드는 작업 방법이 여러 개라면, 그중 전환 횟수가 이하인 방법이 하나라도 있을 때 그 출력 수열을 한 번 센다.
답을 으로 나눈 나머지를 출력한다.
입력은 다음과 같은 형식으로 주어진다.
조건을 만족하는 서로 다른 출력 수열의 개수를 으로 나눈 나머지를 출력한다.
모든 카드를 출력하려면 두 프린터를 모두 사용해야 하므로 최소 한 번의 전환이 필요하다. 이므로 가능한 출력 수열은 없다.
A 다음 B를 사용하거나 B 다음 A를 사용하면 전환은 한 번이다. 두 방법의 출력 수열은 모두 이므로 한 번만 센다.
가능한 출력 수열은 , , , 의 네 가지이다. 각각 프린터 사용 순서 AABB, ABBA, BAAB, BBAA로 만들 수 있으며, 전환 횟수는 순서대로 이다.
같은 수열을 만드는 다른 방법의 전환 횟수가 를 초과하더라도, 조건을 만족하는 방법이 하나라도 있으면 그 수열을 한 번 센다.