#include # pragma GCC target("avx2") # pragma GCC optimize("O3") # pragma GCC optimize("unroll-loops") using namespace std; int main() { int N, Q; cin >> N >> Q; string X; cin >> X; for(int i = 0; i < Q; ++i) { long long ans = 0; int T = 0, F = 0; int l, r; cin >> l >> r; l--; if(X[l] == 'T') T++; else F++; if(T) ans++; for(int i = l + 1; i < r; i += 2) { if(X[i] == '+' && X[i+1] == 'T') { T += F; F = 0; } if(X[i] == '*' && X[i+1] == 'F') { F += T; T = 0; } if(X[i] == '^' && X[i+1] == 'T') { swap(T, F); } if(X[i+1] == 'T') T++; else F++; ans += T; } cout << ans << endl; } }