Welcome Contest (京都・オープン) 2026/03/26 14:00 ~ 2026/03/26 18:00 4:00:00.000

A Prefix Sum

問題
制限時間: 2 sec メモリ制限: 1024 MB
Prefix Sum
Statement

長さ \(N\) の非負整数列 \(A = (A_1, A_2, \dots, A_N)\) と、正整数 \(M\) が与えられます。

\(k=1,2,\dots,N\) のそれぞれについて、\(\sum_{i=1}^k A_i\) を \(M\) で割った余りを出力してください。

Input

入力は以下の形式で標準入力から与えられます。

\(N~M\)
\(A_1~A_2~\dots ~A_N\)

入力は以下の制約をすべて満たします。

  • \(2 \leq N \leq 10^5\)
  • \(10^{18} \leq M \leq 2^{60}-1\)
  • \(0 \leq A_i \leq 2^{60}-1\)
  • 入力はすべて整数

Output

答えを \(N\) 行で出力してください。

\(k\) 行目に \(\sum_{i=1}^k A_i\) を \(M\) で割った余りを出力してください。

Example

Input 1
5 1111100000111110000
0 1 3 1111111111111111111 1152921504606846975
Output 1
0
1
4
11111000001115
41832615495738090