// ROOT : DRAGON3012009 : WA in Real Life
#include <bits/stdc++.h>
#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 compare(v) sort((v).begin(), (v).end()); (v).erase(unique((v).begin(), (v).end()), (v).end());
#define ll long long
#define el "\n"
#define fi first
#define se second
#define _ROOT_ int main()
#define M 1000000007
#define MAXN 200001
#define BLOCK 600
#define Bit(i) (1LL << i )
#define INF (1ll<<30)
#define NAME "file"
#define debug(a) cout << #a << " = " << a << endl;
using namespace std;
ll n, m, q ;
ll a[MAXN] ;
ll p[MAXN ] ;
ll belong[MAXN ] ;
ll blockSum[MAXN ] ;
ll belongP[MAXN ] ;
ll res[MAXN ] ;
ll lienquan[BLOCK + 1 ][BLOCK + 1 ] ;
ll lazy[MAXN ] ;
vector<ll> adj[MAXN ] ;
struct Data {
ll t, l, r, x ;
} que[MAXN ] ;
void buildBlock(ll curBlock ) {
FOR(j, belong[1], belong[n]) {
ll st = j * BLOCK, fin = (j + 1) * BLOCK - 1;
ll L = curBlock * BLOCK, R = (curBlock + 1 ) * BLOCK - 1 ;
L = max(L, 1LL ) ;
R = min(n, R ) ;
FOR(k, L, R ) if(st <= p[k] && p[k] <= fin ) lienquan[curBlock][j] ++ ;
}
FOR(j , 1, belong[n]) lienquan[curBlock][j] += lienquan[curBlock][j - 1] ;
}
void update(ll l, ll r, ll x ) {
if(belong[l] == belong[r]) {
FOR(i, l, r ) {
a[p[i]] += x ;
blockSum[p[i] / BLOCK] += x ;
}
} else {
for(ll i = l ; belong[i] == belong[l] ; i ++ ) {
a[p[i]] += x ;
blockSum[p[i] / BLOCK] += x ;
}
for(ll i = r ; belong[i] == belong[r] ; i -- ) {
a[p[i]] += x ;
blockSum[p[i] / BLOCK] += x ;
}
FOR(i, belong[l] + 1, belong[r] - 1 ) lazy[i] += x ;
}
}
ll get(ll l , ll r ) {
ll ans = 0 ;
if(belong[l] == belong[r]) {
FOR(i , l , r ) {
ans += a[i] + lazy[belongP[i] ] ;
}
}else {
for(ll i = l ; belong[i] == belong[l] ; i ++ ) {
ans += a[i] + lazy[belongP[i] ] ;
}
for(ll i = r ; belong[i] == belong[r] ; i -- ) {
ans += a[i] + lazy[belongP[i] ] ;
}
FOR(i, belong[l] + 1, belong[r] - 1 ) {
ans += blockSum[i] ;
}
FOR(i , belong[1] , belong[n]) {
if(lienquan[i][belong[r] - 1 ] >= lienquan[i][belong[l]] ) ans += (lienquan[i][ belong[r] - 1 ] - lienquan[i][ belong[l] ] ) * lazy[i] ;
}
}
return ans ;
}
void undo_prefix_block(ll curBlock ) {
FORD(j , belong[n] , 1 ) lienquan[curBlock][j] -= lienquan[curBlock][j - 1 ] ;
}
void rebuild_prefix_block(ll curBlock ) {
FOR(j , 1 , belong[n]) lienquan[curBlock][j] += lienquan[curBlock][j - 1] ;
}
void manual_fix_block(ll curBlock ) {
ll L = curBlock * BLOCK , R = (curBlock + 1 ) * BLOCK - 1 ;
L = max(1LL , L ) ;
R = min(R , n ) ;
FOR(i , L , R ) {
a[p[i]] += lazy[curBlock ] ;
blockSum[p[i] / BLOCK] += lazy[curBlock ] ;
}
lazy[curBlock] = 0 ;
}
void addBlock(ll curBlock , ll pos , ll value ) {
lienquan[curBlock][p[pos] / BLOCK] += value ;
}
void swap_perm(ll l , ll r ) {
if(belong[l] == belong[r]) {
swap(p[l] , p[r]) ;
return ;
}
manual_fix_block(belong[l]) ;
manual_fix_block(belong[r]) ;
undo_prefix_block(belong[l] ) ;
undo_prefix_block(belong[r] ) ;
addBlock(belong[l] , l , -1 ) ;
addBlock(belong[r] , r , -1 ) ;
belongP[p[l]] = r / BLOCK ;
belongP[p[r]] = l / BLOCK ;
swap(p[l] , p[r]) ;
addBlock(belong[l] , l , 1 ) ;
addBlock(belong[r] , r , 1 ) ;
rebuild_prefix_block(belong[l]) ;
rebuild_prefix_block(belong[r]) ;
}
void dfs(ll u ) {
if(que[u].t == 2 ) {
res[u] = get(que[u].l , que[u].r ) ;
}
for(ll v : adj[u]) {
if(que[v].t == 1 ) {
update(que[v].l, que[v].r, que[v].x ) ;
} else if(que[v].t == 3 ) {
swap_perm(que[v].l, que[v].r ) ;
}
dfs(v ) ;
if(que[v].t == 1 ) {
update(que[v].l, que[v].r, - que[v].x ) ;
} else if(que[v].t == 3 ) {
swap_perm(que[v].l, que[v].r ) ;
}
}
}
void init() {
cin >> n >> q ;
FOR(i, 1, n ) cin >> a[i] ;
FOR(i, 1, n ) cin >> p[i] ;
FOR(i , 1 , n ) blockSum[i / BLOCK ] += a[i];
FOR(i, 1, n ) belong[i] = i / BLOCK ;
FOR(i, 1, n ) belongP[p[i]] = i / BLOCK ;
ll last = -1 ;
FOR(i, 1, n ) {
if(last != belong[i]) {
last = belong[i] ;
buildBlock(last ) ;
}
}
FOR(i , 1 , q ) {
cin >> que[i].t >> que[i].l ;
if(que[i].t == 4 ) {
adj[que[i].l - 1 ].push_back(i) ;
continue ;
}else adj[i - 1].push_back(i) ;
cin >> que[i].r ;
if(que[i].t == 1 ) cin >> que[i].x ;
}
}
void solve() {
dfs(0 ) ;
FOR(i, 1, q ) if(que[i].t == 2 ) cout << res[i] << el ;
}
_ROOT_ {
// freopen(NAME".inp", "r", stdin);
// freopen(NAME".out", "w", stdout) ;
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t = 1; // cin >> t ;
while(t--) {
init();
solve();
}
return (0&0);
}
Ly8gUk9PVCA6IERSQUdPTjMwMTIwMDkgOiBXQSBpbiBSZWFsIExpZmUKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgRk9SKGksbCxyKSBmb3IoaW50IGkgPSBsIDsgaSA8PSByIDsgaSArKykKI2RlZmluZSBGT1JEKGkscixsKSBmb3IoaW50IGkgPSByIDsgaSA+PSBsIDsgaSAtLSkKI2RlZmluZSBSRVAoaSwgYSApIGZvcihpbnQgaSA9IDAgOyBpIDwgYSA7IGkgKysgKQojZGVmaW5lIGNvbXBhcmUodikgc29ydCgodikuYmVnaW4oKSwgKHYpLmVuZCgpKTsgKHYpLmVyYXNlKHVuaXF1ZSgodikuYmVnaW4oKSwgKHYpLmVuZCgpKSwgKHYpLmVuZCgpKTsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBlbCAiXG4iCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBfUk9PVF8gaW50IG1haW4oKQojZGVmaW5lIE0gMTAwMDAwMDAwNwojZGVmaW5lIE1BWE4gMjAwMDAxCiNkZWZpbmUgQkxPQ0sgNjAwCiNkZWZpbmUgQml0KGkpICgxTEwgPDwgaSApCiNkZWZpbmUgSU5GICgxbGw8PDMwKQojZGVmaW5lIE5BTUUgImZpbGUiCiNkZWZpbmUgZGVidWcoYSkgY291dCA8PCAjYSA8PCAiID0gIiA8PCBhIDw8IGVuZGw7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpsbCBuLCBtLCBxIDsKbGwgYVtNQVhOXSA7CmxsIHBbTUFYTiBdIDsKbGwgYmVsb25nW01BWE4gXSA7CmxsIGJsb2NrU3VtW01BWE4gXSA7CmxsIGJlbG9uZ1BbTUFYTiBdIDsKbGwgcmVzW01BWE4gXSA7CmxsIGxpZW5xdWFuW0JMT0NLICsgMSBdW0JMT0NLICsgMSBdIDsKbGwgbGF6eVtNQVhOIF0gOwp2ZWN0b3I8bGw+IGFkaltNQVhOIF0gOwpzdHJ1Y3QgRGF0YSB7CiAgICBsbCB0LCBsLCByLCB4IDsKfSBxdWVbTUFYTiBdIDsKCnZvaWQgYnVpbGRCbG9jayhsbCBjdXJCbG9jayApIHsKICAgIEZPUihqLCBiZWxvbmdbMV0sIGJlbG9uZ1tuXSkgewogICAgICAgIGxsIHN0ID0gaiAqIEJMT0NLLCBmaW4gPSAoaiArIDEpICogQkxPQ0sgLSAxOwogICAgICAgIGxsIEwgPSBjdXJCbG9jayAqIEJMT0NLLCBSID0gKGN1ckJsb2NrICsgMSApICogQkxPQ0sgLSAxIDsKICAgICAgICBMID0gbWF4KEwsIDFMTCApIDsKICAgICAgICBSID0gbWluKG4sIFIgKSA7CiAgICAgICAgRk9SKGssIEwsIFIgKSBpZihzdCA8PSBwW2tdICYmIHBba10gPD0gZmluICkgbGllbnF1YW5bY3VyQmxvY2tdW2pdICsrIDsKICAgIH0KICAgIEZPUihqICwgMSwgYmVsb25nW25dKSBsaWVucXVhbltjdXJCbG9ja11bal0gKz0gbGllbnF1YW5bY3VyQmxvY2tdW2ogLSAxXSA7Cn0KCnZvaWQgdXBkYXRlKGxsIGwsIGxsIHIsIGxsIHggKSB7CiAgICBpZihiZWxvbmdbbF0gPT0gYmVsb25nW3JdKSB7CiAgICAgICAgRk9SKGksIGwsIHIgKSB7CiAgICAgICAgICAgIGFbcFtpXV0gKz0geCA7CiAgICAgICAgICAgIGJsb2NrU3VtW3BbaV0gLyBCTE9DS10gKz0geCA7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBmb3IobGwgaSA9IGwgOyBiZWxvbmdbaV0gPT0gYmVsb25nW2xdIDsgaSArKyApIHsKICAgICAgICAgICAgYVtwW2ldXSArPSB4IDsKICAgICAgICAgICAgYmxvY2tTdW1bcFtpXSAvIEJMT0NLXSArPSB4IDsKICAgICAgICB9CiAgICAgICAgZm9yKGxsIGkgPSByIDsgYmVsb25nW2ldID09IGJlbG9uZ1tyXSA7IGkgLS0gKSB7CiAgICAgICAgICAgIGFbcFtpXV0gKz0geCA7CiAgICAgICAgICAgIGJsb2NrU3VtW3BbaV0gLyBCTE9DS10gKz0geCA7CgogICAgICAgIH0KICAgICAgICBGT1IoaSwgYmVsb25nW2xdICsgMSwgYmVsb25nW3JdIC0gMSApIGxhenlbaV0gKz0geCA7CiAgICB9Cn0KCmxsIGdldChsbCBsICwgbGwgciApIHsKICAgIGxsIGFucyA9IDAgOwogICAgaWYoYmVsb25nW2xdID09IGJlbG9uZ1tyXSkgewogICAgICAgIEZPUihpICwgbCAsIHIgKSB7CiAgICAgICAgYW5zICs9IGFbaV0gKyBsYXp5W2JlbG9uZ1BbaV0gXSA7CiAgICAgICAgfQogICAgfWVsc2UgewogICAgICAgIGZvcihsbCBpID0gbCA7IGJlbG9uZ1tpXSA9PSBiZWxvbmdbbF0gOyBpICsrICkgewogICAgICAgICAgICAgICAgICAgYW5zICs9IGFbaV0gKyBsYXp5W2JlbG9uZ1BbaV0gXSA7CiAgICAgICAgfQogICAgICAgIGZvcihsbCBpID0gciA7IGJlbG9uZ1tpXSA9PSBiZWxvbmdbcl0gOyBpIC0tICkgewogICAgICAgICAgICAgICBhbnMgKz0gYVtpXSArIGxhenlbYmVsb25nUFtpXSBdIDsKICAgICAgICB9CiAgICAgICAgRk9SKGksIGJlbG9uZ1tsXSArIDEsIGJlbG9uZ1tyXSAtIDEgKSB7CiAgICAgICAgYW5zICs9IGJsb2NrU3VtW2ldIDsKICAgICAgICB9CiAgICAgICAgRk9SKGkgLCBiZWxvbmdbMV0gLCBiZWxvbmdbbl0pIHsKICAgICAgaWYobGllbnF1YW5baV1bYmVsb25nW3JdIC0gMSBdID49IGxpZW5xdWFuW2ldW2JlbG9uZ1tsXV0gKSAgYW5zICs9IChsaWVucXVhbltpXVsgYmVsb25nW3JdIC0gMSBdIC0gbGllbnF1YW5baV1bIGJlbG9uZ1tsXSBdICkgKiBsYXp5W2ldIDsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gYW5zIDsKfQoKdm9pZCB1bmRvX3ByZWZpeF9ibG9jayhsbCBjdXJCbG9jayApIHsKICAgIEZPUkQoaiAsIGJlbG9uZ1tuXSAsIDEgKSBsaWVucXVhbltjdXJCbG9ja11bal0gLT0gbGllbnF1YW5bY3VyQmxvY2tdW2ogLSAxIF0gOwp9Cgp2b2lkIHJlYnVpbGRfcHJlZml4X2Jsb2NrKGxsIGN1ckJsb2NrICkgewogICAgRk9SKGogLCAxICwgYmVsb25nW25dKSBsaWVucXVhbltjdXJCbG9ja11bal0gKz0gbGllbnF1YW5bY3VyQmxvY2tdW2ogLSAxXSA7Cn0KCnZvaWQgbWFudWFsX2ZpeF9ibG9jayhsbCBjdXJCbG9jayApIHsKICAgIGxsIEwgPSBjdXJCbG9jayAqIEJMT0NLICwgUiA9IChjdXJCbG9jayArIDEgKSAqIEJMT0NLIC0gMSA7CiAgICBMID0gbWF4KDFMTCAsIEwgKSA7CiAgICBSID0gbWluKFIgLCBuICkgOwogICAgRk9SKGkgLCBMICwgUiApIHsKICAgIGFbcFtpXV0gKz0gbGF6eVtjdXJCbG9jayBdIDsKICAgIGJsb2NrU3VtW3BbaV0gLyBCTE9DS10gKz0gbGF6eVtjdXJCbG9jayBdIDsKICAgIH0KICAgIGxhenlbY3VyQmxvY2tdID0gMCA7Cn0KCnZvaWQgYWRkQmxvY2sobGwgY3VyQmxvY2sgLCBsbCBwb3MgLCBsbCB2YWx1ZSApIHsKICAgIGxpZW5xdWFuW2N1ckJsb2NrXVtwW3Bvc10gLyBCTE9DS10gKz0gdmFsdWUgOwp9Cgp2b2lkIHN3YXBfcGVybShsbCBsICwgbGwgciApIHsKICAgIGlmKGJlbG9uZ1tsXSA9PSBiZWxvbmdbcl0pIHsKICAgIHN3YXAocFtsXSAsIHBbcl0pIDsKICAgIHJldHVybiA7CiAgICB9CiAgICBtYW51YWxfZml4X2Jsb2NrKGJlbG9uZ1tsXSkgOwogICAgbWFudWFsX2ZpeF9ibG9jayhiZWxvbmdbcl0pIDsKCiAgICB1bmRvX3ByZWZpeF9ibG9jayhiZWxvbmdbbF0gKSA7CiAgICB1bmRvX3ByZWZpeF9ibG9jayhiZWxvbmdbcl0gKSA7CgogICAgYWRkQmxvY2soYmVsb25nW2xdICwgbCAsIC0xICkgOwogICAgYWRkQmxvY2soYmVsb25nW3JdICwgciAsIC0xICkgOwoKICAgIGJlbG9uZ1BbcFtsXV0gPSByIC8gQkxPQ0sgOwogICAgYmVsb25nUFtwW3JdXSA9IGwgLyBCTE9DSyA7CgogICAgc3dhcChwW2xdICwgcFtyXSkgOwoKICAgIGFkZEJsb2NrKGJlbG9uZ1tsXSAsIGwgLCAxICkgOwogICAgYWRkQmxvY2soYmVsb25nW3JdICwgciAsIDEgKSA7CgogICAgcmVidWlsZF9wcmVmaXhfYmxvY2soYmVsb25nW2xdKSA7CiAgICByZWJ1aWxkX3ByZWZpeF9ibG9jayhiZWxvbmdbcl0pIDsKCn0KCnZvaWQgZGZzKGxsIHUgKSB7CiAgICBpZihxdWVbdV0udCA9PSAyICkgewogICAgICAgIHJlc1t1XSA9IGdldChxdWVbdV0ubCAsIHF1ZVt1XS5yICkgOwogICAgfQogICAgZm9yKGxsIHYgOiBhZGpbdV0pIHsKICAgICAgICBpZihxdWVbdl0udCA9PSAxICkgewogICAgICAgICAgICB1cGRhdGUocXVlW3ZdLmwsIHF1ZVt2XS5yLCBxdWVbdl0ueCApIDsKICAgICAgICB9IGVsc2UgaWYocXVlW3ZdLnQgPT0gMyApIHsKICAgICAgICAgICAgc3dhcF9wZXJtKHF1ZVt2XS5sLCBxdWVbdl0uciApIDsKICAgICAgICB9CiAgICAgICAgZGZzKHYgKSA7CiAgICAgICAgaWYocXVlW3ZdLnQgPT0gMSApIHsKICAgICAgICAgICAgdXBkYXRlKHF1ZVt2XS5sLCBxdWVbdl0uciwgLSBxdWVbdl0ueCApIDsKICAgICAgICB9IGVsc2UgaWYocXVlW3ZdLnQgPT0gMyApIHsKICAgICAgICAgICAgc3dhcF9wZXJtKHF1ZVt2XS5sLCBxdWVbdl0uciApIDsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgaW5pdCgpIHsKICAgIGNpbiA+PiBuID4+IHEgOwogICAgRk9SKGksIDEsIG4gKSBjaW4gPj4gYVtpXSA7CiAgICBGT1IoaSwgMSwgbiApIGNpbiA+PiBwW2ldIDsKICAgIEZPUihpICwgMSAsIG4gKSBibG9ja1N1bVtpIC8gQkxPQ0sgXSArPSBhW2ldOyAgCiAgICBGT1IoaSwgMSwgbiApIGJlbG9uZ1tpXSA9IGkgLyBCTE9DSyA7CiAgICBGT1IoaSwgMSwgbiApIGJlbG9uZ1BbcFtpXV0gPSBpIC8gQkxPQ0sgOwogICAgbGwgbGFzdCA9IC0xIDsKICAgIEZPUihpLCAxLCBuICkgewogICAgICAgIGlmKGxhc3QgIT0gYmVsb25nW2ldKSB7CiAgICAgICAgICAgIGxhc3QgPSBiZWxvbmdbaV0gOwogICAgICAgICAgICBidWlsZEJsb2NrKGxhc3QgKSA7CiAgICAgICAgfQogICAgfQogICAgRk9SKGkgLCAxICwgcSApIHsKICAgIGNpbiA+PiBxdWVbaV0udCA+PiBxdWVbaV0ubCA7CiAgICBpZihxdWVbaV0udCA9PSA0ICkgewogICAgICAgIGFkaltxdWVbaV0ubCAtIDEgXS5wdXNoX2JhY2soaSkgOwogICAgICAgIGNvbnRpbnVlIDsKICAgIH1lbHNlIGFkaltpIC0gMV0ucHVzaF9iYWNrKGkpIDsKICAgIGNpbiA+PiBxdWVbaV0uciA7CiAgICBpZihxdWVbaV0udCA9PSAgMSApIGNpbiA+PiBxdWVbaV0ueCA7CiAgICB9Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBkZnMoMCApIDsKICAgIEZPUihpLCAxLCBxICkgaWYocXVlW2ldLnQgPT0gMiApIGNvdXQgPDwgcmVzW2ldIDw8IGVsIDsKfQoKCl9ST09UXyB7Ci8vICAgIGZyZW9wZW4oTkFNRSIuaW5wIiwgInIiLCBzdGRpbik7Ci8vICAgIGZyZW9wZW4oTkFNRSIub3V0IiwgInciLCBzdGRvdXQpIDsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CiAgICBpbnQgdCA9IDE7IC8vIGNpbiA+PiB0IDsKICAgIHdoaWxlKHQtLSkgewogICAgICAgIGluaXQoKTsKICAgICAgICBzb2x2ZSgpOwogICAgfQogICAgcmV0dXJuICgwJjApOwp9Cg==