#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;

const int N = 100005;

int T, n, m, a[N], p[N], l[N], ans[N];
vector<int> q[N];

struct BIT {
	int u[N];
	void clear() {
		memset(u, 0, sizeof u);
	}
	void add(int x, int v) {
		for(; x <= n; x += x&-x) u[x] += v;
	}
	int sum(int x) {
		int s = 0;
		for(; x > 0; x -= x&-x) s += u[x];
		return s;
	}
} tr;

int main() {
	scanf("%d", &T);
	while(T--) {
		scanf("%d%d", &n, &m);
		for(int i = 1; i <= n; ++i) {
			scanf("%d", a+i);
			p[a[i]] = i;
			q[i].clear();
		}
		p[0] = p[n+1] = n+1;
		for(int r, i = 0; i < m; ++i) {
			scanf("%d%d", l+i, &r);
			q[r].push_back(i);
		}
		tr.clear();
		for(int i = 1; i <= n; ++i) {
			tr.add(i, 1);
			if(p[a[i]-1] < i) tr.add(p[a[i]-1], -1);
			if(p[a[i]+1] < i) tr.add(p[a[i]+1], -1);
			for(int j = 0; j < (int)q[i].size(); ++j) {
				int x = q[i][j];
				ans[x] = tr.sum(i) - tr.sum(l[x]-1);
			}
		}
		for(int i = 0; i < m; ++i) {
			printf("%d\n", ans[i]);
		}
	}
}
