#include using namespace std; using lint = long long; int main() { int n, q; cin >> n >> q; vector> kyori(n); vector pos(n), pos2(n); for (int i = 0; i < n; i++) { int a; cin >> a; kyori[i] = {a, i}; } sort(kyori.begin(), kyori.end()); for (int i = 0; i < n; i++) { if (i != 0 && kyori[i-1].first == kyori[i].first) { pos[kyori[i].second] = pos[kyori[i-1].second]; } else { pos[kyori[i].second] = i; } } for (int i = n-1; i >= 0; i--) { if (i != n-1 && kyori[i+1].first == kyori[i].first) { pos2[kyori[i].second] = pos2[kyori[i+1].second]; } else { pos2[kyori[i].second] = i; } } while (q--) { int x, y; cin >> x >> y; x--, y--; cout << max(0, pos[x]-pos2[y]-1) << endl; } }