/*
Author : DeMen100ns (Vo Khac Trieu)
School: University of Science, VNU-HCM
*/
#include <bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
const int N = 2e5 + 5;
const long long INF = numeric_limits<long long>::max() / 2;
const int MAXA = 1e9;
const int BL = 430;
int a[N];
vector <int> block[N];
int L[N], R[N], sum[N], rev[N];
int cntblock = 0, n;
void normalize(int id){
if (rev[id]){
rev[id] ^= 1;
reverse(block[id].begin(), block[id].end());
}
}
void split(int u){
//split u-(u+1)
for(int i = 1; i <= cntblock; ++i){
if (L[i] <= u && u <= R[i]){
if (u == R[i]) return;
normalize(i);
for(int j = cntblock; j >= i + 1; --j){
// block[j + 1] = block[j];
swap(block[j + 1], block[j]); //-> O(1)
L[j + 1] = L[j]; R[j + 1] = R[j];
sum[j + 1] = sum[j]; rev[j + 1] = rev[j];
} ++cntblock;
//i, i + 1
//L[i] - u, u + 1 - R[i]
L[i + 1] = u + 1, R[i + 1] = R[i];
R[i] = u;
sum[i] = sum[i + 1] = 0;
rev[i] = rev[i + 1] = 0;
vector <int> v = block[i];
block[i].clear(); block[i + 1].clear();
for(int j = 0, id = L[i]; j < v.size(); ++j, ++id){
if (id <= u){
block[i].push_back(v[j]);
sum[i] += v[j];
} else {
block[i + 1].push_back(v[j]);
sum[i + 1] += v[j];
}
}
return;
//[1 2 3] [4 5 | 6] [7 8 9]
//[1 2 3] [4 5] [6] [7 8 9]
}
}
}
void reverse(int l, int r){
split(l - 1); split(r);
int Lb = n + 1, Rb = 0;
for(int b = 1; b <= cntblock; ++b){
if (l <= L[b] && R[b] <= r){
Lb = min(Lb, b);
Rb = b;
}
}
for(int l = Lb, r = Rb; l < r; ++l, --r){
swap(block[l], block[r]);
swap(sum[l], sum[r]);
swap(rev[l], rev[r]);
}
int lcur = 1;
for(int b = 1; b <= cntblock; ++b){
L[b] = lcur; R[b] = lcur + block[b].size() - 1;
lcur += block[b].size();
}
for(int b = Lb; b <= Rb; ++b){
rev[b] ^= 1;
}
}
void rebuild(){
int id = 0;
for(int i = 1; i <= cntblock; ++i){
normalize(i);
for(int v : block[i]){
a[++id] = v;
}
block[i].clear();
L[i] = R[i] = 0;
sum[i] = rev[i] = 0;
}
cntblock = 0;
for(int i = 1; i <= n; ++i){
if (i % BL == 1) {
cntblock++;
}
if (L[cntblock] == 0) L[cntblock] = R[cntblock] = i;
else R[cntblock] = i;
sum[cntblock] += a[i];
block[cntblock].push_back(a[i]);
}
}
void solve(){
int q; cin >> n >> q;
for(int i = 1; i <= n; ++i){
cin >> a[i];
if (i % BL == 1) {
cntblock++;
}
if (L[cntblock] == 0) L[cntblock] = R[cntblock] = i;
else R[cntblock] = i;
sum[cntblock] += a[i];
block[cntblock].push_back(a[i]);
}
int cnt = 0;
while (q--){
int type; cin >> type;
if (type == 1){
int u, v; cin >> u >> v;
reverse(u, v);
} else {
int l, r; cin >> l >> r;
int ans = 0;
for(int b = 1; b <= cntblock; ++b){
//Case 1: Khong giao
if (R[b] < l || L[b] > r) continue;
//Case 2: Nam trong
if (l <= L[b] && R[b] <= r){
ans += sum[b];
continue;
}
normalize(b);
for(int j = 0, i = L[b]; i <= R[b]; ++i, ++j){
if (l <= i && i <= r){
ans += block[b][j];
}
}
}
cout << ans << endl;
}
cnt = (cnt + 2) % BL;
if (cnt <= 1){
rebuild();
}
}
}
signed main(){
ios_base::sync_with_stdio(0); cin.tie(0);
int t = 1; // cin >> t;
for(int test = 1; test <= t; ++test){
solve();
}
}
LyoKQXV0aG9yIDogRGVNZW4xMDBucyAoVm8gS2hhYyBUcmlldSkKU2Nob29sOiBVbml2ZXJzaXR5IG9mIFNjaWVuY2UsIFZOVS1IQ00KKi8KCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgojZGVmaW5lIGVuZGwgJ1xuJwoKI2RlZmluZSBpbnQgbG9uZyBsb25nCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE4gPSAyZTUgKyA1Owpjb25zdCBsb25nIGxvbmcgSU5GID0gbnVtZXJpY19saW1pdHM8bG9uZyBsb25nPjo6bWF4KCkgLyAyOwpjb25zdCBpbnQgTUFYQSA9IDFlOTsKY29uc3QgaW50IEJMID0gNDMwOwoKaW50IGFbTl07CnZlY3RvciA8aW50PiBibG9ja1tOXTsKaW50IExbTl0sIFJbTl0sIHN1bVtOXSwgcmV2W05dOwppbnQgY250YmxvY2sgPSAwLCBuOwoKdm9pZCBub3JtYWxpemUoaW50IGlkKXsKICAgIGlmIChyZXZbaWRdKXsKICAgICAgICByZXZbaWRdIF49IDE7CiAgICAgICAgcmV2ZXJzZShibG9ja1tpZF0uYmVnaW4oKSwgYmxvY2tbaWRdLmVuZCgpKTsKICAgIH0KfQoKdm9pZCBzcGxpdChpbnQgdSl7CiAgICAvL3NwbGl0IHUtKHUrMSkKCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IGNudGJsb2NrOyArK2kpewogICAgICAgIGlmIChMW2ldIDw9IHUgJiYgdSA8PSBSW2ldKXsKICAgICAgICAgICAgaWYgKHUgPT0gUltpXSkgcmV0dXJuOwoKICAgICAgICAgICAgbm9ybWFsaXplKGkpOwogICAgICAgICAgICBmb3IoaW50IGogPSBjbnRibG9jazsgaiA+PSBpICsgMTsgLS1qKXsKICAgICAgICAgICAgICAgIC8vIGJsb2NrW2ogKyAxXSA9IGJsb2NrW2pdOwogICAgICAgICAgICAgICAgc3dhcChibG9ja1tqICsgMV0sIGJsb2NrW2pdKTsgLy8tPiBPKDEpCiAgICAgICAgICAgICAgICBMW2ogKyAxXSA9IExbal07IFJbaiArIDFdID0gUltqXTsKICAgICAgICAgICAgICAgIHN1bVtqICsgMV0gPSBzdW1bal07IHJldltqICsgMV0gPSByZXZbal07CiAgICAgICAgICAgIH0gKytjbnRibG9jazsKCiAgICAgICAgICAgIC8vaSwgaSArIDEKICAgICAgICAgICAgLy9MW2ldIC0gdSwgdSArIDEgLSBSW2ldCiAgICAgICAgICAgIExbaSArIDFdID0gdSArIDEsIFJbaSArIDFdID0gUltpXTsKICAgICAgICAgICAgUltpXSA9IHU7CgogICAgICAgICAgICBzdW1baV0gPSBzdW1baSArIDFdID0gMDsKICAgICAgICAgICAgcmV2W2ldID0gcmV2W2kgKyAxXSA9IDA7CgogICAgICAgICAgICB2ZWN0b3IgPGludD4gdiA9IGJsb2NrW2ldOwogICAgICAgICAgICBibG9ja1tpXS5jbGVhcigpOyBibG9ja1tpICsgMV0uY2xlYXIoKTsKCiAgICAgICAgICAgIGZvcihpbnQgaiA9IDAsIGlkID0gTFtpXTsgaiA8IHYuc2l6ZSgpOyArK2osICsraWQpewogICAgICAgICAgICAgICAgaWYgKGlkIDw9IHUpewogICAgICAgICAgICAgICAgICAgIGJsb2NrW2ldLnB1c2hfYmFjayh2W2pdKTsKICAgICAgICAgICAgICAgICAgICBzdW1baV0gKz0gdltqXTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYmxvY2tbaSArIDFdLnB1c2hfYmFjayh2W2pdKTsKICAgICAgICAgICAgICAgICAgICBzdW1baSArIDFdICs9IHZbal07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gCgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIC8vWzEgMiAzXSBbNCA1IHwgNl0gWzcgOCA5XQogICAgICAgICAgICAvL1sxIDIgM10gWzQgNV0gWzZdIFs3IDggOV0KICAgICAgICB9CiAgICB9Cn0KCnZvaWQgcmV2ZXJzZShpbnQgbCwgaW50IHIpewogICAgc3BsaXQobCAtIDEpOyBzcGxpdChyKTsKCiAgICBpbnQgTGIgPSBuICsgMSwgUmIgPSAwOwogICAgZm9yKGludCBiID0gMTsgYiA8PSBjbnRibG9jazsgKytiKXsKICAgICAgICBpZiAobCA8PSBMW2JdICYmIFJbYl0gPD0gcil7CiAgICAgICAgICAgIExiID0gbWluKExiLCBiKTsKICAgICAgICAgICAgUmIgPSBiOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IoaW50IGwgPSBMYiwgciA9IFJiOyBsIDwgcjsgKytsLCAtLXIpewogICAgICAgIHN3YXAoYmxvY2tbbF0sIGJsb2NrW3JdKTsKICAgICAgICBzd2FwKHN1bVtsXSwgc3VtW3JdKTsKICAgICAgICBzd2FwKHJldltsXSwgcmV2W3JdKTsKICAgIH0KCiAgICBpbnQgbGN1ciA9IDE7CiAgICBmb3IoaW50IGIgPSAxOyBiIDw9IGNudGJsb2NrOyArK2IpewogICAgICAgIExbYl0gPSBsY3VyOyBSW2JdID0gbGN1ciArIGJsb2NrW2JdLnNpemUoKSAtIDE7CiAgICAgICAgbGN1ciArPSBibG9ja1tiXS5zaXplKCk7CiAgICB9CgogICAgZm9yKGludCBiID0gTGI7IGIgPD0gUmI7ICsrYil7CiAgICAgICAgcmV2W2JdIF49IDE7CiAgICB9Cn0KCnZvaWQgcmVidWlsZCgpewogICAgaW50IGlkID0gMDsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gY250YmxvY2s7ICsraSl7CiAgICAgICAgbm9ybWFsaXplKGkpOwogICAgICAgIGZvcihpbnQgdiA6IGJsb2NrW2ldKXsKICAgICAgICAgICAgYVsrK2lkXSA9IHY7CiAgICAgICAgfQogICAgICAgIGJsb2NrW2ldLmNsZWFyKCk7CiAgICAgICAgTFtpXSA9IFJbaV0gPSAwOwogICAgICAgIHN1bVtpXSA9IHJldltpXSA9IDA7CiAgICB9CiAgICBjbnRibG9jayA9IDA7CgogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyArK2kpewogICAgICAgIGlmIChpICUgQkwgPT0gMSkgewogICAgICAgICAgICBjbnRibG9jaysrOwogICAgICAgIH0KCiAgICAgICAgaWYgKExbY250YmxvY2tdID09IDApIExbY250YmxvY2tdID0gUltjbnRibG9ja10gPSBpOwogICAgICAgIGVsc2UgUltjbnRibG9ja10gPSBpOwoKICAgICAgICBzdW1bY250YmxvY2tdICs9IGFbaV07CgogICAgICAgIGJsb2NrW2NudGJsb2NrXS5wdXNoX2JhY2soYVtpXSk7CiAgICB9ICAgIAp9Cgp2b2lkIHNvbHZlKCl7CiAgICBpbnQgcTsgY2luID4+IG4gPj4gcTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgKytpKXsKICAgICAgICBjaW4gPj4gYVtpXTsKCiAgICAgICAgaWYgKGkgJSBCTCA9PSAxKSB7CiAgICAgICAgICAgIGNudGJsb2NrKys7CiAgICAgICAgfQoKICAgICAgICBpZiAoTFtjbnRibG9ja10gPT0gMCkgTFtjbnRibG9ja10gPSBSW2NudGJsb2NrXSA9IGk7CiAgICAgICAgZWxzZSBSW2NudGJsb2NrXSA9IGk7CgogICAgICAgIHN1bVtjbnRibG9ja10gKz0gYVtpXTsKCiAgICAgICAgYmxvY2tbY250YmxvY2tdLnB1c2hfYmFjayhhW2ldKTsKICAgIH0KCiAgICBpbnQgY250ID0gMDsKICAgIHdoaWxlIChxLS0pewogICAgICAgIGludCB0eXBlOyBjaW4gPj4gdHlwZTsKICAgICAgICBpZiAodHlwZSA9PSAxKXsKICAgICAgICAgICAgaW50IHUsIHY7IGNpbiA+PiB1ID4+IHY7CiAgICAgICAgICAgIHJldmVyc2UodSwgdik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaW50IGwsIHI7IGNpbiA+PiBsID4+IHI7CiAgICAgICAgICAgIGludCBhbnMgPSAwOwogICAgICAgICAgICBmb3IoaW50IGIgPSAxOyBiIDw9IGNudGJsb2NrOyArK2IpewogICAgICAgICAgICAgICAgLy9DYXNlIDE6IEtob25nIGdpYW8KICAgICAgICAgICAgICAgIGlmIChSW2JdIDwgbCB8fCBMW2JdID4gcikgY29udGludWU7CgogICAgICAgICAgICAgICAgLy9DYXNlIDI6IE5hbSB0cm9uZwogICAgICAgICAgICAgICAgaWYgKGwgPD0gTFtiXSAmJiBSW2JdIDw9IHIpewogICAgICAgICAgICAgICAgICAgIGFucyArPSBzdW1bYl07CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbm9ybWFsaXplKGIpOwoKICAgICAgICAgICAgICAgIGZvcihpbnQgaiA9IDAsIGkgPSBMW2JdOyBpIDw9IFJbYl07ICsraSwgKytqKXsKICAgICAgICAgICAgICAgICAgICBpZiAobCA8PSBpICYmIGkgPD0gcil7CiAgICAgICAgICAgICAgICAgICAgICAgIGFucyArPSBibG9ja1tiXVtqXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY291dCA8PCBhbnMgPDwgZW5kbDsKICAgICAgICB9CgogICAgICAgIGNudCA9IChjbnQgKyAyKSAlIEJMOwogICAgICAgIGlmIChjbnQgPD0gMSl7CiAgICAgICAgICAgIHJlYnVpbGQoKTsKICAgICAgICB9CiAgICB9Cn0KCnNpZ25lZCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOwoKICAgIGludCB0ID0gMTsgLy8gY2luID4+IHQ7CiAgICBmb3IoaW50IHRlc3QgPSAxOyB0ZXN0IDw9IHQ7ICsrdGVzdCl7CiAgICAgICAgc29sdmUoKTsKICAgIH0KfQo=