기숙사 비밀번호 구하기

시간 제한2초메모리 제한1024 MB

문제

이 문제는 인터랙티브 문제이다.

한별이와 우빈이는 같은 기숙사 방을 배정받게 되었다. 그런데 한별이와 같은 방을 쓰기 부끄러웠던 우빈이는 한별이가 들어오기 전 문에다가 비밀번호 장치를 설치해 버렸다. 장치를 풀기 위해선 $0 \leq x_{i} < 998\,244\,353$를 만족하는 $N$개의 정수 $x_{1},x_{2},\cdots,x_{N}$를 알아내야 한다. 그러나 츤데레인 우빈이는 한별이의 프로그래밍 실력이 뛰어난지 알아보기 위하여 다음의 함수를 제공하였다. 한별이는 $N$개의 원하는 정수 $a_{1},a_{2},\cdots,a_{N}$을 골라 그 함숫값 $f(a_{1},a_{2},\cdots,a_{N})$을 알아낼 수 있다.

$0$ 이상 $998\,244\,353$ 미만의 정수들의 집합을 $\mathbb{M}$이라고 할 때, 함수 $f: {\overbrace{\mathbb M \times \mathbb M \times \cdots \times \mathbb M}^{N\text{ times}}} \rightarrow \mathbb{M}$은 다음과 같이 정의된다: $$f(a_{1},a_{2},\cdots,a_{N})=(a_{1}x_{1}+a_{2}x_{2}+\cdots+a_{N}x_{N}) \bmod 998\,244\,353$$

단, 함수는 최대 $N$번만 사용할 수 있으며, 모든 함수 사용을 통틀어서 $a_{1}, a_{2}, \ldots, a_{N}$는 전부 달라야 한다. 즉, 함수를 $k$번 사용했다면 $kN$개의 인자가 모두 달라야 한다.

이제 비밀번호를 구하여 우빈이를 놀래켜 보자.

제한

  • $2 \leq N \leq 2500$

힌트

당신의 프로그램은 무언가를 출력한 후 즉시 출력 버퍼를 비워야 한다. 다음은 언어별 출력 버퍼를 비우는 방법이다.

  • C — fflush(stdout)
  • C++ — std::cout.flush()
  • Python — sys.stdout.flush()
  • Java — System.out.flush()
  • 그 외의 언어는 각 언어의 Documentation을 참고한다.

또한, 예제의 빈 줄은 입출력이 어떤 방식으로 이루어지는지 이해를 돕기 위해 의도적으로 추가된 것이며, 실제 입출력에는 빈 줄이 나타나지 않는다.