#include using namespace std; const int N = 1e5 + 5, L = 18; int a[N], st[N], nx[N], up[L][N]; int main(){ int n, q; scanf("%d%d", &n, &q); for(int i = 1; i <= n; i++) scanf("%d", &a[i]); int tp = 0; for(int i = n; i >= 1; i--){ while(tp && a[st[tp]] < a[i]) tp--; nx[i] = tp ? st[tp] : n + 1; st[++tp] = i; } for(int i = 1; i <= n; i++) up[0][i] = (nx[i] <= n ? nx[i] : 0); for(int k = 1; k < L; k++) for(int i = 1; i <= n; i++) up[k][i] = up[k-1][i] ? up[k-1][up[k-1][i]] : 0; while(q--){ int op, l, r; scanf("%d%d%d", &op, &l, &r); int p = l, c = 0; for(int k = L - 1; k >= 0; k--) if(up[k][p] && up[k][p] <= r){ c += 1 << k; p = up[k][p]; } printf("%d\n", c + 1); } return 0; }