Problem:
Array Update

Problem

項数 N、初項 a、公差 d の等差数列 A がある。以下の形式で数列を更新する命令文が M 個与えられるので、与えられた順序で数列 A を M 回更新したときの K 項目の値を求めよ。

i 番目の命令文は3つの整数 xi , yi , zi で表される(1 ≤ i ≤ M)。

xiが0だった場合、yi項目の値と
zi項目の値を入れ替える。

xiが1だった場合、yi項目の値を
zi項目の値に書き換える。

Input

N
a d
M
x1 y1 z1
x2 y2 z2
...
xM yM zM
K

1行目に、1つの整数 N が与えられる。
2行目に、2つの整数 a と d が空白区切りで与えられる。
3行目に、1つの整数 M が与えられる。

4行目からの M 行のうち i 行目には i 番目の命令文を表す 3 つの整数 xi, yi, zi が空白区切りで与えられる。

最後の行に、1つの整数 K が与えられる。

Constraints

1 ≤ N ≤ 108

1 ≤ a ≤ 5

1 ≤ d ≤ 5

1 ≤ M ≤ 10

0 ≤ xi ≤ 1 (1 ≤ i ≤ M)

1 ≤ yi ≤ N (1 ≤ i ≤ M)

1 ≤ zi ≤ N (1 ≤ i ≤ M)

yi ≠ zi (1 ≤ i ≤ M)

1 ≤ K ≤ N

Output

入力で与えられた順番で数列AをM回更新したときのK項目を出力せよ。

Sample Input 1

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

Sample Output 1

11

{ 2 , 5 , 8 , 11 , 14 }

　 ↓

0 2 5 … 2項目の値と5項目の値を入れ替える

　 ↓

{ 2 , 14 , 8 , 11 , 5 }

　 ↓

0 3 5 … 3項目の値と5項目の値を入れ替える

　 ↓

{ 2 , 14 , 5 , 11 , 8 }

　 ↓

1 2 4 … 2項目の値を4項目の値に書き換える

　 ↓

{ 2 , 11 , 5 , 11 , 8 }

よって2項目は11である。

Sample Input 2

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

Sample Output 2

15

Solution in Ruby (judge verdict: Accepted)

n = gets.to_i
a, d = gets.chomp.split.map(&:to_i)
h = Hash.new{|h, k| h[k] = k}
gets.to_i.times{
    x, y, z = gets.chomp.split.map(&:to_i)
    case x
    when 0
        temp = h[y]
        h[y] = h[z]
        h[z] = temp
    when 1
        h[y] = h[z]
    end
}
puts a + d * (h[gets.to_i] - 1)