#include #include using namespace std; using P = pair; const int M = 1000000007; // const int M = 998244353; const long long LM = 1LL << 60; int op(int a, int b) { return a + b; } int e() { return 0; } int mapping(bool a, int b) { return a ? 0 : b; } bool composition(bool a, bool b) { return a || b; } bool id() { return false; } int main() { cin.tie(0); ios::sync_with_stdio(0); int n, q; cin >> n >> q; vector imos(n + 1); for (int i = 0; i < n; ++i) { int a; cin >> a; imos[i + 1] = imos[i] + a; } atcoder::lazy_segtree sg(vector(n, 1)); for (int _ = 0; _ < q; ++_) { int t, l, r; cin >> t >> l >> r; --l; if (t == 1) { int ll = sg.max_right(0, [&](int x){ return x <= l; }); int rr = sg.max_right(0, [&](int x){ return x <= r; }); sg.apply(ll + 1, rr, true); } else { int ll = sg.max_right(0, [&](int x){ return x <= l; }); int rr = sg.max_right(0, [&](int x){ return x <= r; }); cout << imos[rr] - imos[ll] << '\n'; } } return 0; }