#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; using namespace atcoder; typedef long long ll; typedef pair P; template struct BIT{ vector bit; int size; BIT(int n):size(n), bit(n+1, 0){} T sum(int i){ //[0, i) T s=0; while(i>0){ s+=bit[i]; i-=(i&(-i)); } return s; } T sum(int l, int r){ //[l, r) return sum(r)-sum(l); } void add(int i, T x){ i++; while(i<=size){ bit[i]+=x; i+=(i&(-i)); } } }; int main() { int n, q; cin>>n>>q; BIT bit(n+1); BIT bits(n+1); int nx[200020]; ll a[200020]; a[n]=0, nx[n]=n; for(int i=0; i>a[i]; bits.add(i, a[i]); nx[i]=i+1; bit.add(i, 1); } while(q--){ int t, l, r; cin>>t>>l>>r; l--; int ok=0, ng=n; while(ng-ok>1){ int mid=(ok+ng)/2; if(bit.sum(mid)<=l) ok=mid; else ng=mid; } if(t==1){ for(int i=l+1; i1){ int mid=(ok1+ng1)/2; if(bit.sum(mid)<=r) ok1=mid; else ng1=mid; } printf("%lld\n", bits.sum(ok1)-bits.sum(ok)); } } return 0; }