선물 보내기
시간 제한2초메모리 제한1024 MB
N개의 선물을 두 사람에게 나눠 보낼 때, 같은 사람, 서로 다른 사람, 같은 사람이라는 M개의 조건을 모두 만족하는 경우의 수를 센다.
문제
달구는 지난 2023년과 2024년에 열린 UDPC를 성공적으로 개최한 기념으로 윤이와 포닉스에게 보낼 자그마한 선물을 준비했다. 달구가 준비한 선물은 총 개이고, 각 선물은 번부터 번까지의 번호가 붙어 있다.
달구는 준비한 모든 선물을 유니 또는 포닉스에게 보내려고 한다. 그러나 달구는 어떤 선물을 윤이에게 보낼지, 포닉스에게 보낼지를 아직 정하지 못했다. 달구는 개의 조건을 세우고, 이 조건을 모두 만족하는 선에서 윤이와 포닉스에게 선물을 보내려고 한다. 달구가 세운 조건은 아래 세 가지 유형 중 하나이다.
-
U: 번 선물과 번 선물은 모두 윤이에게 보내야 한다. -
D: 번 선물과 번 선물은 윤이와 포닉스에게 각각 하나씩 보내야 한다. -
P: 번 선물과 번 선물은 모두 포닉스에게 보내야 한다.
달구가 윤이와 포닉스에게 선물을 보낼 수 있는 서로 다른 방법의 수를 로 나눈 나머지를 구해보자. 어떤 두 방법이 서로 다르다는 것은 두 방법에서 윤이 또는 포닉스가 받을 선물 번호의 집합이 서로 다름을 의미한다. 만약 모든 조건을 만족하도록 각 선물을 윤이 또는 포닉스에게 보낼 수 없는 경우에는 대신 0을 출력한다.
입력
첫째 줄에 달구가 준비한 선물의 수 과 선물을 보낼 때 고려해야 할 조건의 수 이 공백으로 구분되어 주어진다.
다음 개의 줄에는 두 선물의 번호 와 U, D, P 중 하나의 문자가 공백으로 구분되어 주어진다.
입력에서 주어지는 모든 수는 정수이다.
출력
달구가 윤이와 포닉스에게 선물을 보낼 수 있는 서로 다른 방법의 수를 로 나눈 나머지를 출력한다. 만약 모든 조건을 만족하도록 각 선물을 윤이 또는 포닉스에게 보낼 수 없는 경우에는 대신 0을 출력한다.