Problem:
Problem C: Round And Round

Problem

長さ$N$の数列$A=${$a_{1},a_{2},a_{3},...,a_{n}$}が与えられる。

$a_{i}$ ($i=1,2,3,...,n$)は、$i$で初期化されているものとする。

以下の二種類のクエリを合計$Q$回処理せよ。

数列$A$の先頭から$k$番目の要素の値を出力する。

数列$A$の先頭から$k$と$k+1$番目を境界に二つの数列をスワップする。

詳しくはサンプル入出力を参考にせよ。

Input

入力は以下の形式で与えられる。

$N$ $Q$
$query_1$
$query_2$
...
$query_Q$

各クエリは以下の二種類のいずれかの形式で与えられる。

クエリ$0$

$0$ $k$

数列$A$の先頭から$k$番目の要素の値を出力する。

クエリ$1$

$1$ $k$

数列$A$の先頭から$k$と$k+1$番目を境界に二つの数列をスワップする。

入力はすべて整数で与えられる。

$1$行目に$N$, $Q$が空白区切りで与えられる。

$2$行目以降の$Q$行にクエリが改行区切りで与えられる。

各クエリ内の数値は全て空白区切りである。

Constraints

入力は以下の条件を満たす。

$2 \leq N \leq 10^9 $

$1 \leq Q \leq 10^5 $

各クエリについて、入力は以下の条件を満たす。

クエリ$0$

$1 \leq k \leq N $

クエリ$1$

$1 \leq k \leq N-1 $

Output

各クエリ$1$に対し値を一行に出力せよ。

Sample Input 1

5 4
1 2
0 2
1 1
0 3

Sample Output 1

4
1

長さ$5$の数列$A=[1,2,3,4,5]$が与えられる

$1$番目のクエリで $[1,2,3,4,5]$ -> $[1,2] [3,4,5]$ -> $[3,4,5] [1,2]$ -> $[3,4,5,1,2]$ と数列が変化する。

$2$番目のクエリで先頭から$2$番目の要素の値である$4$を出力する。

$3$番目のクエリで $[3,4,5,1,2]$ -> $[3] [4,5,1,2]$ -> $[4,5,1,2] [3]$ -> $[4,5,1,2,3]$ と数列が変化する。

$4$番目のクエリで先頭から$3$番目の要素の値である$1$を出力する。

Sample Input 2

4 4
1 2
1 1
0 1
0 4

Sample Output 2

4
3

Sample Input 3

10 6
1 1
0 1
1 9
0 5
1 1
0 10

Sample Output 3

2
5
1

Solution in C# (judge verdict: Accepted)

using System.Text;
using System;

public class Hello
{
    public static void Main()
    {
        string[] line = Console.ReadLine().Trim().Split(' ');
        var n = int.Parse(line[0]);
        var q = int.Parse(line[1]);
        var pos = 1;
        var sb = new StringBuilder();
        for (int i = 0; i < q; i++)
        {
            line = Console.ReadLine().Trim().Split(' ');
            var c = int.Parse(line[0]);
            var k = int.Parse(line[1]);
            if (c == 0)
            {
                var w = pos + k - 1;
                if (w > n) w -= n;
                sb.Append(string.Format("{0}\n", w));
            }
            else
            {
                pos += k;
                if (pos > n) pos -= n;
            }
        }
        Console.Write(sb);
    }
}