#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; class SparseTable { private: vector logTable; vector > data; public: SparseTable(const vector& v){ int n = v.size(); logTable.assign(n+1, 0); for(int i=2; i<=n; ++i) logTable[i] = logTable[i>>1] + 1; data.assign(1, v); for(int i=1; (1<(n - len + 1)); for(int j=0; j> n; vector > v(n); for(int i=0; i> v[i].first; v[i].second = i; } sort(v.begin(), v.end()); vector index(n); for(int i=0; i len(n-1, 0); for(int i=0; i> m >> x >> d; vector a(m), b(m); for(int i=0; i b[i]) swap(a[i], b[i]); else ++ b[i]; x = (x + d) % (n * (n - 1LL)); } long long ans = 0; for(int i=0; i b2) swap(a2, b2); ans += st.query(a2, b2 - 1); } cout << ans << endl; return 0; }