/** * @FileName a.cpp * @Author kanpurin * @Created 2022.07.09 03:32:04 **/ #include "bits/stdc++.h" using namespace std; typedef long long ll; /** * @FileName a.cpp * @Author kanpurin * @Created 2021.04.30 03:39:29 **/ #include "bits/stdc++.h" using namespace std; typedef long long ll; constexpr int logn = 20; constexpr int maxn = 1 << logn; ll hilbertorder(int x, int y) { ll d = 0; for (int s = 1<>= 1) { bool rx = x & s, ry = y & s; d = d << 2 | rx * 3 ^ static_cast(ry); if (ry) continue; if (rx) { x = maxn - x; y = maxn - y; } swap(x, y); } return d; } int main() { int n,k,q;cin >> n >> k >> q; vector a(k),b(k),l(q),r(q),x(q),idx(q),p(n),ip(n),ans(q); vector ord(q); int count = 0, now_l = 0, now_r = 0; for (int i = 0; i < k; i++) { scanf("%d %d",&a[i],&b[i]); a[i]--; b[i]--; } for (int i = 0; i < q; i++) { scanf("%d %d %d",&l[i], &r[i], &x[i]); l[i]--; x[i]--; } for (int i = 0; i < q; i++) { ord[i] = hilbertorder(l[i],r[i]); } iota(p.begin(), p.end(),0); iota(ip.begin(), ip.end(),0); iota(idx.begin(), idx.end(),0); sort(idx.begin(), idx.end(), [&](int a,int b) { return ord[a] < ord[b]; }); auto swapl = [&](int x) { p[ip[a[x]]] = b[x]; p[ip[b[x]]] = a[x]; swap(ip[a[x]],ip[b[x]]); }; auto swapr = [&](int x) { ip[p[a[x]]] = b[x]; ip[p[b[x]]] = a[x]; swap(p[a[x]],p[b[x]]); }; for (int i = 0; i < q; i++) { while(now_l > l[idx[i]]) swapl(--now_l); while(now_r < r[idx[i]]) swapr(now_r++); while(now_l < l[idx[i]]) swapl(now_l++); while(now_r > r[idx[i]]) swapr(--now_r); ans[idx[i]] = p[x[idx[i]]]; } for (int i = 0; i < q; i++) printf("%d\n",ans[i]+1); return 0; }