時間制限 : sec, メモリ制限 : KB
English / Japanese  

Range Update Query

数列 A = {a0, a1 ,...,an−1} に対し、次の2つの操作を行うプログラムを作成せよ。

  • update(s, t, x): as, as+1,..., atxに変更する。
  • find(i): ai の値を出力する。

ただし、ai (i = 0, 1,...,n−1)は、231-1で初期化されているものとする。

入力

n q
query1
query2
:
queryq

1行目にAの要素数n, クエリの数qが与えられる。続くq行にi 番目のクエリ queryi が与えられる。queryi は以下のいずれかの形式で与えられる。

0 s t x

または

1 i

各クエリの最初の数字は、クエリの種類を示し、'0'がupdate(s, t, x)、'1'がfind(i) を表す。

出力

findクエリについて、値を1行に出力せよ。

制約

  • 1 ≤ n ≤ 100000
  • 1 ≤ q ≤ 100000
  • 0 ≤ s ≤ t < n
  • 0 ≤ i < n
  • 0 ≤ x < 231−1

入力例 1

3 5
0 0 1 1
0 1 2 3
0 2 2 2
1 0
1 1

出力例 1

1
3

入力例 2

1 3
1 0
0 0 0 5
1 0

出力例 2

2147483647
5