#include #define endl '\n' using namespace std; void fileIO() { freopen("bros.in", "r", stdin); freopen("bros.out", "w", stdout); } void fastIO() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); } const int MAXN=1e5+5; string s; int n,q; int a[MAXN]; int suff[MAXN]; struct SegmTree { long long tree[4*MAXN]; void build(int l, int r, int node) { if (l == r) { tree[node] = a[l]; return; } int mid = (l + r)/2; build(l, mid, 2*node); build(mid + 1, r, 2*node + 1); tree[node] = tree[2*node] + tree[2*node + 1]; } void update(int l, int r, int node, int pos, int val) { if (l == r) { tree[node] = val; return; } int mid = (l+r)/2; if (pos <= mid) update(l, mid, 2*node, pos, val); else update(mid + 1, r, 2*node + 1, pos, val); tree[node] = tree[2*node] + tree[2*node + 1]; } long long query(int l, int r, int node, int ql, int qr) { if (ql <= l && r <= qr) { return tree[node]; } long long res=0; int mid = (l+r)/2; if (ql <= mid) res = res + query(l, mid, 2*node, ql, qr); if (mid + 1 <= qr) res = res + query(mid + 1, r, 2*node + 1, ql, qr); return res; } void update(int pos, int val) { update(1, n, 1, pos, val); } long long query(int l, int r) { return query(1, n, 1, l, r); } }; SegmTree tree; void solve() { cin>>s; n=s.size(); suff[n+1]=0; for(int i=n-1;i>=0;i--) { suff[i+1]=suff[i+2]; if(s[i]=='L') suff[i+1]++; } for(int i=0;i>q; for(int i=0;i>l>>r; long long ans=tree.query(l,r); int cnt=(r-l+1)-(suff[l]-suff[r+1]); ans=ans-1LL*cnt*suff[r+1]; cout<