// ROOT : DRAGON3012009
#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define el "\n"
#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define __ROOT__ int main()
#pragma GCC optimize("O2")
#define FOR(i,l,r) for(int i = l ; i <= r ; i ++)
#define FORD(i,r,l) for(int i = r ; i >= l ; i --)
#define REP(i, a ) for(int i = 0 ; i < a ; i ++ )
#define fi first
#define se second
#define M 1000000000
#define MAXN 500001
#define INF (1ll<<30)
#define BLOCK_SIZE 425
#define MAX_NODE 1001001
#define LOG 19
#define ALPHA_SIZE 26
#define BASE 311
#define NAME "file"
#define compare(v) sort((v).begin(), (v).end()); (v).erase(unique((v).begin(), (v).end()), (v).end());
using namespace std;
const ll MOD[] = {(ll)1e9 + 2277, (ll)1e9 + 5277, (ll)1e9 + 8277, (ll)1e9 + 9277, (ll) 1e9 + 7 };
const ll NMOD = 1;
const int dx[] = {-1, 0, 1,0};
const int dy[] = {0, 1, 0, -1};
//**Variable**//
ll n,R, Q, cur_ver =0, cnt_ver = 0 ;
ll last = 0 ;
ll arr[MAXN] ;
ll root[MAXN] ;
//**Struct**//
struct Query {
ll r, a, b, c,d ;
};
vector<Query> que ;
struct Node {
ll left, right, val ;
};
struct Persistent_seg {
Node tree[MAXN *20] ;
ll cur_node = 0 ;
int build( ll l, ll r ) {
ll id = ++ cur_node;
if(l == r ) {
tree[cur_node].val = arr[l] ;
return id;
}
ll m = (l + r) >> 1;
tree[id].left = build(l, m ) ;
tree[id].right = build(m + 1, r) ;
tree[id].val = max( tree[tree[id].left].val, tree[tree[id].right].val ) ;
return id ;
}
int update(ll pre_node, ll l, ll r, ll pos, ll value ) {
ll id = ++ cur_node ;
tree[id] = tree[pre_node] ;
if(l == r ) {
tree[id].val = value ;
return id;
}
ll m = (l + r) >> 1;
if(m >= pos ) tree[id].left = update(tree[pre_node].left, l, m, pos, value) ;
else tree[id].right = update(tree[pre_node].right, m + 1, r,pos, value) ;
tree[id].val =max( tree[tree[id].left].val, tree[tree[id].right].val ) ;
return id ;
}
ll get(ll id, ll l, ll r, ll u, ll v ) {
if(u >r || v < l ) return -INF;
if(u <= l && v >= r ) return tree[id].val ;
ll m = (l + r) >> 1;
return max(get(tree[id].left, l, m, u, v ), get(tree[id].right, m + 1, r, u, v ) ) ;
}
} seg ;
//**Function**//
template<class X, class Y >
bool minimize(X & x, const Y &y ) {
return x > y ? x = y, 1:0 ;
}
template<class X, class Y >
bool maximize(X &x, const Y &y ) {
return x < y ? x = y, 1:0 ;
}
void init() {
cin>>n;
FOR(i,1,n) cin >> arr[i];
root[0] = seg.build(1, n) ;
// FOR(i , 1 , n ) cout <<seg.get(root[0] , 1 , n , i , i ) << " "; cout <<"run " << el ;
cin >> R >> Q;
}
void solve() {
FOR(i, 1, Q) {
ll r, a, b, c, d;
cin >> r >> a >> b >> c >> d;
que.push_back({r, a, b, c, d});
}
FOR(i, 1, R) {
ll cntttt = 0 ;
for (auto [t, a, b, c, d] : que) {
// cntttt ++ ;
if (t == 1) {
ll u = (1LL * last * a + c) % n + 1;
ll k = (1LL * last * b + d) % M + 1 ;
// cout << u << " " << k << el ;
cnt_ver++;
root[cnt_ver] = seg.update(root[cur_ver], 1, n, u, k);
cur_ver = cnt_ver;
} else if (t == 2) {
ll u = (1LL * last * a + c) % n + 1;
ll v = (1LL * last * b + d) % n + 1;
if (u > v) swap(u, v);
last = seg.get(root[cur_ver], 1, n, u, v);
cout << last << el;
} else if (t == 3) {
ll u = (1LL * last * a + c) % (cnt_ver + 1);
cnt_ver++;
root[cnt_ver] = root[u];
cur_ver = cnt_ver;
}
// if(cntttt == 1 )break ;
}
}
// FOR(i , 1 , n ) cout <<seg.get(root[1] , 1 , n , i , i ) << " "; cout <<"run " << el ;
}
__ROOT__ {
// freopen(NAME".inp" , "r" , stdin);
// freopen(NAME".out" , "w", stdout) ;
fast;
int t =1 ;// cin >> t;
while(t-- ) {
init();
solve();
}
}
Ly8gUk9PVCA6IERSQUdPTjMwMTIwMDkKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBlbCAiXG4iCiNkZWZpbmUgZmFzdCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKI2RlZmluZSBfX1JPT1RfXyBpbnQgbWFpbigpCiNwcmFnbWEgR0NDIG9wdGltaXplKCJPMiIpCiNkZWZpbmUgRk9SKGksbCxyKSBmb3IoaW50IGkgPSBsIDsgaSA8PSByIDsgaSArKykKI2RlZmluZSBGT1JEKGkscixsKSBmb3IoaW50IGkgPSByIDsgaSA+PSBsIDsgaSAtLSkKI2RlZmluZSBSRVAoaSwgYSApIGZvcihpbnQgaSA9IDAgOyBpIDwgYSA7IGkgKysgKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgTSAxMDAwMDAwMDAwCiNkZWZpbmUgTUFYTiA1MDAwMDEKI2RlZmluZSBJTkYgKDFsbDw8MzApCiNkZWZpbmUgQkxPQ0tfU0laRSA0MjUKI2RlZmluZSBNQVhfTk9ERSAxMDAxMDAxCiNkZWZpbmUgTE9HIDE5CiNkZWZpbmUgQUxQSEFfU0laRSAyNgojZGVmaW5lIEJBU0UgMzExCiNkZWZpbmUgTkFNRSAiZmlsZSIKI2RlZmluZSBjb21wYXJlKHYpIHNvcnQoKHYpLmJlZ2luKCksICh2KS5lbmQoKSk7ICh2KS5lcmFzZSh1bmlxdWUoKHYpLmJlZ2luKCksICh2KS5lbmQoKSksICh2KS5lbmQoKSk7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGxsIE1PRFtdID0geyhsbCkxZTkgKyAyMjc3LCAobGwpMWU5ICsgNTI3NywgKGxsKTFlOSArIDgyNzcsIChsbCkxZTkgKyA5Mjc3LCAobGwpIDFlOSArIDcgfTsKY29uc3QgbGwgTk1PRCA9IDE7CmNvbnN0IGludCBkeFtdID0gey0xLCAwLCAxLDB9Owpjb25zdCBpbnQgZHlbXSA9IHswLCAxLCAwLCAtMX07Ci8vKipWYXJpYWJsZSoqLy8KbGwgbixSLCBRLCAgIGN1cl92ZXIgPTAsIGNudF92ZXIgPSAwICA7CmxsIGxhc3QgPSAwIDsKbGwgYXJyW01BWE5dIDsKbGwgcm9vdFtNQVhOXSA7Ci8vKipTdHJ1Y3QqKi8vCnN0cnVjdCBRdWVyeSB7CiAgICBsbCByLCBhLCBiLCBjLGQgOwp9Owp2ZWN0b3I8UXVlcnk+IHF1ZSA7CnN0cnVjdCBOb2RlIHsKICAgIGxsIGxlZnQsIHJpZ2h0LCB2YWwgOwp9OwpzdHJ1Y3QgUGVyc2lzdGVudF9zZWcgewogICAgTm9kZSB0cmVlW01BWE4gKjIwXSAgOwogICAgbGwgY3VyX25vZGUgPSAwIDsKICAgIGludCBidWlsZCggbGwgbCwgbGwgciApIHsKICAgICAgICBsbCBpZCA9ICArKyBjdXJfbm9kZTsKICAgICAgICBpZihsID09IHIgKSB7CiAgICAgICAgICAgIHRyZWVbY3VyX25vZGVdLnZhbCA9IGFycltsXSA7CiAgICAgICAgICAgIHJldHVybiBpZDsKICAgICAgICB9CiAgICAgICAgICBsbCBtID0gKGwgKyByKSA+PiAxOwogICAgICAgIHRyZWVbaWRdLmxlZnQgPSBidWlsZChsLCBtICApIDsKICAgICAgICB0cmVlW2lkXS5yaWdodCA9IGJ1aWxkKG0gKyAxLCByKSA7CiAgICAgICAgdHJlZVtpZF0udmFsID0gbWF4KCB0cmVlW3RyZWVbaWRdLmxlZnRdLnZhbCwgdHJlZVt0cmVlW2lkXS5yaWdodF0udmFsICkgOwogICAgICAgIHJldHVybiBpZCA7CiAgICB9CiAgICBpbnQgdXBkYXRlKGxsIHByZV9ub2RlLCBsbCBsLCBsbCByLCBsbCBwb3MsIGxsIHZhbHVlICkgewogICAgICAgIGxsIGlkID0gKysgY3VyX25vZGUgOwogICAgICAgIHRyZWVbaWRdID0gdHJlZVtwcmVfbm9kZV0gOwogICAgICAgIGlmKGwgPT0gciApIHsKICAgICAgICAgICAgdHJlZVtpZF0udmFsID0gdmFsdWUgOwogICAgICAgICAgICByZXR1cm4gaWQ7CiAgICAgICAgfQogICAgICAgbGwgbSA9IChsICsgcikgPj4gMTsKICAgICAgICBpZihtID49IHBvcyApIHRyZWVbaWRdLmxlZnQgPSB1cGRhdGUodHJlZVtwcmVfbm9kZV0ubGVmdCwgbCwgbSwgcG9zLCB2YWx1ZSkgOwogICAgICAgIGVsc2UgdHJlZVtpZF0ucmlnaHQgPSB1cGRhdGUodHJlZVtwcmVfbm9kZV0ucmlnaHQsIG0gKyAxLCByLHBvcywgdmFsdWUpIDsKICAgICAgICB0cmVlW2lkXS52YWwgPW1heCggdHJlZVt0cmVlW2lkXS5sZWZ0XS52YWwsIHRyZWVbdHJlZVtpZF0ucmlnaHRdLnZhbCApIDsKICAgICAgICByZXR1cm4gaWQgOwogICAgfQogICAgbGwgZ2V0KGxsIGlkLCBsbCBsLCBsbCByLCBsbCB1LCBsbCB2ICkgewogICAgICAgIGlmKHUgPnIgfHwgdiA8IGwgKSByZXR1cm4gLUlORjsKICAgICAgICBpZih1IDw9IGwgJiYgdiA+PSByICkgcmV0dXJuIHRyZWVbaWRdLnZhbCA7CiAgICAgICAgICBsbCBtID0gKGwgKyByKSA+PiAxOwogICAgICAgIHJldHVybiBtYXgoZ2V0KHRyZWVbaWRdLmxlZnQsIGwsIG0sIHUsIHYgKSwgZ2V0KHRyZWVbaWRdLnJpZ2h0LCBtICsgMSwgciwgdSwgdiApICkgOwogICAgfQp9IHNlZyA7Ci8vKipGdW5jdGlvbioqLy8KdGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWSA+CmJvb2wgbWluaW1pemUoWCAmIHgsIGNvbnN0IFkgJnkgKSB7CiAgICByZXR1cm4geCA+IHkgPyB4ID0geSwgMTowIDsKfQp0ZW1wbGF0ZTxjbGFzcyBYLCBjbGFzcyBZID4KYm9vbCBtYXhpbWl6ZShYICZ4LCBjb25zdCBZICZ5ICkgewogICAgcmV0dXJuIHggPCB5ID8geCA9IHksIDE6MCA7Cn0KCnZvaWQgaW5pdCgpIHsKICAgIGNpbj4+bjsKICAgIEZPUihpLDEsbikgY2luID4+IGFycltpXTsKICAgIHJvb3RbMF0gPSBzZWcuYnVpbGQoMSwgbikgOwovLyAgICBGT1IoaSAsIDEgLCBuICkgY291dCA8PHNlZy5nZXQocm9vdFswXSAsIDEgLCBuICwgaSAsIGkgKSA8PCAiICI7IGNvdXQgPDwicnVuICIgPDwgZWwgOwogICAgY2luID4+IFIgPj4gUTsKfQoKdm9pZCBzb2x2ZSgpIHsKICAgIEZPUihpLCAxLCBRKSB7CiAgICAgICAgbGwgciwgYSwgYiwgYywgZDsKICAgICAgICBjaW4gPj4gciA+PiBhID4+IGIgPj4gYyA+PiBkOwogICAgICAgIHF1ZS5wdXNoX2JhY2soe3IsIGEsIGIsIGMsIGR9KTsKICAgIH0KICAgIEZPUihpLCAxLCBSKSB7CiAgICAgICAgbGwgY250dHR0ID0gIDAgOwogICAgICAgIGZvciAoYXV0byBbdCwgYSwgYiwgYywgZF0gOiBxdWUpIHsKLy8gICAgICAgICAgICAgICAgY250dHR0ICsrIDsKICAgICAgICAgICAgaWYgKHQgPT0gMSkgewogICAgICAgICAgICAgICAgbGwgdSA9ICgxTEwgKiBsYXN0ICogYSArIGMpICUgbiArIDE7CiAgICAgICAgICAgICAgICBsbCBrID0gKDFMTCAqIGxhc3QgKiBiICsgZCkgJSBNICsgMSA7Ci8vICAgICAgICAgICAgICAgIGNvdXQgPDwgdSA8PCAiICIgPDwgayA8PCBlbCA7CiAgICAgICAgICAgICAgICBjbnRfdmVyKys7CiAgICAgICAgICAgICAgICByb290W2NudF92ZXJdID0gc2VnLnVwZGF0ZShyb290W2N1cl92ZXJdLCAxLCBuLCB1LCBrKTsKICAgICAgICAgICAgICAgIGN1cl92ZXIgPSBjbnRfdmVyOwogICAgICAgICAgICB9IGVsc2UgaWYgKHQgPT0gMikgewogICAgICAgICAgICAgICAgbGwgdSA9ICgxTEwgKiBsYXN0ICogYSArIGMpICUgbiArIDE7CiAgICAgICAgICAgICAgICBsbCB2ID0gKDFMTCAqIGxhc3QgKiBiICsgZCkgJSBuICsgMTsKICAgICAgICAgICAgICAgIGlmICh1ID4gdikgc3dhcCh1LCB2KTsKICAgICAgICAgICAgICAgIGxhc3QgPSBzZWcuZ2V0KHJvb3RbY3VyX3Zlcl0sIDEsIG4sIHUsIHYpOwogICAgICAgICAgICAgICAgY291dCA8PCBsYXN0IDw8IGVsOwogICAgICAgICAgICB9IGVsc2UgaWYgKHQgPT0gMykgewogICAgICAgICAgICAgICAgbGwgdSA9ICgxTEwgKiBsYXN0ICogYSArIGMpICUgKGNudF92ZXIgKyAxKTsKICAgICAgICAgICAgICAgIGNudF92ZXIrKzsKICAgICAgICAgICAgICAgIHJvb3RbY250X3Zlcl0gPSByb290W3VdOwogICAgICAgICAgICAgICAgY3VyX3ZlciA9IGNudF92ZXI7CiAgICAgICAgICAgIH0KLy8gICAgICAgIGlmKGNudHR0dCA9PSAxIClicmVhayA7CiAgICAgICAgfQogICAgfQovLyAgICAgICBGT1IoaSAsIDEgLCBuICkgY291dCA8PHNlZy5nZXQocm9vdFsxXSAsIDEgLCBuICwgaSAsIGkgKSA8PCAiICI7IGNvdXQgPDwicnVuICIgPDwgZWwgOwp9CgoKX19ST09UX18gewovLyAgICAgZnJlb3BlbihOQU1FIi5pbnAiICwgInIiICwgc3RkaW4pOwovLyAgICAgZnJlb3BlbihOQU1FIi5vdXQiICwgInciLCBzdGRvdXQpIDsKICAgIGZhc3Q7CiAgICBpbnQgdCA9MSA7Ly8gICAgY2luID4+IHQ7CiAgICB3aGlsZSh0LS0gKSB7CiAgICAgICAgaW5pdCgpOwogICAgICAgIHNvbHZlKCk7CiAgICB9Cn0K