이 대회에 원이 등장할 수 없는 이유는?
시간 제한0.8초메모리 제한1024 MB
N비트 문자열 위의 불리언 함수 f와 순열들이 주어질 때, 비트 순열과 XOR로 이루어진 사상의 k제곱이 f를 보존하게 하는 N비트 마스크 v의 개수를 998244353으로 나눈 나머지를 구한다.
문제
파이널대회여서
이번에는 하늘이가 무려 MatKor Cup에 참가한다. 또다시 하늘이가 MatKor에 진심인 모습에 감격한 세준이는 하늘이를 위해 새로운 문제를 만들어 이진 원정대를 결성하려 했다. 하지만 원이 등장할 수 없기 때문에 이진 정대 톡방을 만들어 아래 문제를 풀기로 했다.

실제 만들어진 이진 정대 톡방이다.
먼저 임의의 비트 정수 에 대해 적용되는 몇 가지 연산을 아래와 같이 정의하자.
- 임의의 길이 의 순열* \sigma =\left\\{ \sigma\_i \right\\}에 대해, 비트 정수 는 번째 비트가 의 번째 비트와 같도록 정의한다.
- 임의의 비트 정수 에 대해, 는 와 간의 bitwise XOR 연산이다.
예를 들어 이고 라면, 이다. 여기서 의 번째 비트가 이 아니라 임에 유의하라. 정수 의 번째 비트의 값은 이다.
위의 정의를 따르는 임의의 에 대해, 두 연산을 묶어 아래와 같은 함수 를 정의하자.
\[g_{\sigma ,v}=\left( \sigma x \right)\oplus v\]
당신은 함수 를 알고 있다. 는 비트 정수 하나를 입력받아 또는 을 출력하는 함수이다. 만약 비트 정수를 입력받아 비트 정수를 출력하는 임의의 함수 에 대해, 어떤 비트 정수 에 대해서도 라면, 이러한 를 에 의해 무효화된다고 한다.
당신은 다음 조건이 성립하도록 길이가 인 목록 H=\left\[ \left( \sigma^1,v\_1 \right) ,\left( \sigma^2,v\_2 \right) ,\cdots ,\left( \sigma^M,v\_M \right) \right]를 구성했다.
- 는 모두 길이 의 순열이다.
- 은 모두 비트 정수이다.
- 모든 는 에 의해 무효화된다.
- 에 의해 무효화되는 임의의 에 대해, 어떤 이상 이하의 정수로 구성된 유한한 길이 의 수열 \left\\{ a\_i \right\\}가 존재하여 가 항등함수이다.
그런데 를 적어 둔 종이가 MatKor 출제진에 의해 의도적으로 훼손되었다. 모든 값들이 교묘하게 지워져 남은 정보는 뿐이었다.
시련이 닥쳤지만 실험은 계속되어야 한다. 논문을 쓰지 못하면 졸업할 수 없기 때문이다. 와 이 주어질 때, 아래 쿼리에 답해 보자.
- : 음이 아닌 정수 와 길이 의 순열 \left\\{ \pi\_i \right\\}에 대해, 가 에 의해 무효화되도록 하는 비트 정수 의 개수를 으로 나눈 나머지를 출력하라. 여기서 이다.
*길이 의 순열이란 이상 이하의 정수가 한 개씩 포함된 길이 의 수열을 의미한다.
입력
첫 번째 줄에 이 공백으로 구분되어 주어진다.
두 번째 줄에 길이 의 이진 문자열이 주어진다. 문자열의 왼쪽에서부터 번째 원소는 의 값을 나타내고, 양의 정수 의 번째 비트의 값은 이다.
세 번째 줄부터 줄에 걸쳐 각 줄에 길이 의 순열 의 원소 이 순서대로 공백으로 구분되어 주어진다.
번째 줄에는 쿼리의 개수 가 주어진다.
번째 줄부터 개의 줄에는 쿼리 과 길이 의 순열 의 원소 이 공백으로 구분되어 주어진다.
출력
첫 번째 줄부터 줄에 걸쳐 각 쿼리마다 정답을 한 줄에 한 개씩 출력한다.