#arc035d. [arc035_d]高橋くんとマラソンコース

[arc035_d]高橋くんとマラソンコース

問題文

高橋くんはマラソン大会の主催者で、今度開くマラソン大会の計画案を練っています。 高橋くんの住む街には東西と南北に伸びるそれぞれ 10610^6 本の道があり、南北に伸びる道のうち西から xx 番目の道と、東西に伸びる道のうち南から yy 番目の道が交わる交差点を (x,y)(x,y) と表します。

マラソンコースの作りを簡単にするため、道は東か北の方向へのみ進めるようにしました。 高橋くんはマラソンコースで参加者のタイム計測に使える場所として、NN 個のチェックポイント (pi,qi)(p_i,q_i) を決めました。

高橋くんの街では、参加者はマラソン大会で一人ひとりが違った経路を取りたがるため、コースの異なる経路の数が重要です。 タイム計測の必要から、チェックポイント uu からチェックポイント v(u<v)v (u < v) までマラソンコースを設定したとき、uivu≦i≦v となるチェックポイント ii 全てを参加者は通る必要があります。

そこで、高橋くんは以下の QQ 個のクエリに答える必要があります。

  1. kjk_j 番目のチェックポイントの場所を (aj,bj)(a_j,b_j) に変更する。
  2. チェックポイント l1jl_{1j} からチェックポイント r1jr_{1j} までの異なる経路の総数と、チェックポイント l2jl_{2j} からチェックポイント r2jr_{2j} までの異なる経路の総数のうち、どちらが大きいかを判定する。ただし、経路の数のうち多い方は、少ない方の 22 倍以上はあることが保証される。

高橋くんを助けるためのプログラムを書いてください。


入力

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

NN p1p_1 q1q_1 p2p_2 q2q_2 : pNp_N qNq_N QQ t1t_1 : tQt_Q

  • 11 行目には、チェックポイントの数を表す整数 N(2N2\*105)N (2 ≦ N ≦ 2\*10^5) が与えられる。
  • 22 行目からの NN 行には、チェックポイントの位置を表す整数 pi,qi(1pi,qi106)p_i, q_i(1 ≦ p_i, q_i ≦ 10^6) が空白区切りで与えられる。
  • N+2N+2 行目には、クエリの数を表す整数 Q(1Q2\*105)Q( 1 ≦ Q ≦ 2\*10^5) が与えられる。
  • N+3N+3 行目から QQ 行には、クエリが与えられる。tjt_jjj 番目のクエリの種類を表す。
  • tj=1t_j = 1 のとき、その行に kj,aj,bj(1kjN,1aj,bj106)k_j, a_j, b_j(1 ≦ k_j ≦ N, 1 ≦ a_j, b_j ≦ 10^6) が空白区切りで与えられる。
  • tj=2t_j = 2 のとき、その行に $l_{1j}, r_{1j}, l_{2j}, r_{2j} (1 ≦ l_{1j} < r_{1j} ≦ N, 1 ≦ l_{2j} < r_{2j} ≦ N )$ が空白区切りで与えられる。
  • 任意の i(1iN1)i(1 ≦ i ≦ N-1) に対し、チェックポイント ii からチェックポイント i+1i+1 までの経路が常に(クエリでチェックポイントの場所が変更されても)11 つは存在することが保証される。また、チェックポイントの位置が重なることはない。

部分点

この問題には部分点が設定されている。

  • 3030 点分のテストケースにおいて、2N1,000,1Q1,0002≦N≦1,000, 1≦Q≦1,000 を満たす。

出力

種類 22 のクエリに対する答えを 11 行ずつクエリの与えられた順に出力せよ。チェックポイント l1jl_{1j} から チェックポイント r1jr_{1j} までの経路のほうが多い時は FIRST、チェックポイント l2jl_{2j} からチェックポイント r2jr_{2j} までの経路のほうが多い時は SECOND と出力せよ。

末尾の改行を忘れないこと。


入力例1


4
1 1
2 5
4 5
5 6
4
2 1 3 3 4
2 1 3 1 4
1 2 2 2
2 2 3 3 4

出力例1


FIRST
SECOND
FIRST

11 番目のクエリでは、チェックポイント11 からチェックポイント33 までの経路の数は、以下のように 55 つである。

チェックポイント 33 からチェックポイント 44 までの経路の数は、以下のように 22 つである。

よって、FIRST と出力する。

22 番目のクエリでは、経路の数はそれぞれ 551010 なので、SECOND と出力する。

33 番目のクエリでチェックポイント 22 の位置が変更された後、44 番目のクエリでは、経路の数はそれぞれ 101022 なので、FIRST と出力する。


入力例2


4
1 1
100 100
101 102
199 199
3
2 1 2 2 3
2 1 2 2 4
2 1 2 3 4

出力例2


FIRST
FIRST
FIRST

比べる数は非常に大きくなることに注意してください。