/**********************************************************************************************
-> @author : a_e_kasem
***********************************************************************************************/
//*------------------------------------------------------------------------------------------*//
// ﷽
// { وَأَنْ لَيْسَ لِلْإِنْسَانِ إِلَّا مَا سَعَى }
//
// فَالجُهدُ يُثمِرُ إنْ تَضافَرَ صَفوُهُ، والعَزمُ يَرفعُ صَرحَ كُلِّ بُنيانِ
//
// وَما نَيلُ المَطالِبِ بِالتَمَنّي
// وَلَكِن تُؤخَذُ الدُنيا غِلابا
// ***
// وَما اِستَعصى عَلى قَومٍ مَنالٌ
// إِذا الإِقدامُ كانَ لَهُم رِكابا
//*------------------------------------------------------------------------------------------*//
#include <bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
// Template definition for ordered_set
template<typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
#define int long long
#define NO void(cout << "NO\n")
#define YES void(cout << "YES\n")
#define endl ("\n")
const int oo = 1e18;
const int N = 1e6+5;
struct SparseTable {
int n, LOG;
vector<vector<pair<int, int>>> st;
vector<int> lg;
pair<int, int> merge(const pair<int, int>& a, const pair<int, int>& b) {
if (a.first >= b.first) return a;
return b;
}
SparseTable(const vector<int>& a) {
n = a.size();
LOG = 0;
while ((1 << LOG) <= n) LOG++;
st.assign(LOG, vector<pair<int, int>>(n));
lg.assign(n + 1, 0);
for (int i = 2; i <= n; i++)
lg[i] = lg[i / 2] + 1;
for (int i = 0; i < n; i++)
st[0][i] = {a[i], i};
for (int i = 1; i < LOG; i++) {
for (int j = 0; j + (1 << i) <= n; j++) {
st[i][j] = merge(
st[i - 1][j],
st[i - 1][j + (1 << (i - 1))]
);
}
}
}
// query on [l, r] inclusive (0-based)
pair<int, int> query(int l, int r) {
int len = r - l + 1;
int i = lg[len];
return merge(
st[i][l],
st[i][r - (1 << i) + 1]
);
}
};
void EL7L()
{
int n, q; cin >> n >> q;
vector<int> a(n);
for (auto &it : a) cin >> it;
SparseTable st(a);
vector<vector<int>> pref(n, vector<int>(2, 0)), suff(n, vector<int> (2, 0));
for (int i = n; i >= 1; i--) {
int l = 1, r = i - 1;
int ans = 0;
while (l <= r) {
int mid = (l+r)>>1;
if (st.query(mid, i - 1).first > a[i]) {
ans = mid;
l = mid + 1;
} else {
r = mid - 1;
}
}
pref[i][0] = ans;
}
for (int i = 1; i <= n; i++) {
int l = i + 1, r = n, ans = n + 1;
while (l <= r) {
int mid = (l+r)>>1;
if (st.query(i + 1, mid).first > a[i]) {
ans = mid;
r = mid - 1;
} else {
l = mid + 1;
}
}
suff[i][0] = ans;
}
while (q--)
{
int l, r; cin >> l >> r;
l--, r--;
}
}
int32_t main()
{
#ifdef ONLINE_JUDGE
ios_base::sync_with_stdio(0);
cin.tie(0);
#endif // ONLINE_JUDGE
// freopen("foot.in", "r", stdin);
int t = 1;
cin >> t;
while (t--)
EL7L();
return 0;
}
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLT4gICAgICAgICAgICAgICAgICAgICAgQGF1dGhvciA6IGFfZV9rYXNlbQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIO+3vQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7INmI2Y7Yo9mO2YbZkiDZhNmO2YrZktiz2Y4g2YTZkNmE2ZLYpdmQ2YbZktiz2Y7Yp9mG2ZAg2KXZkNmE2ZHZjtinINmF2Y7YpyDYs9mO2LnZjtmJIH0KLy8KLy8gICAgICAgICAgICAgICAgICAgICDZgdmO2KfZhNis2Y/Zh9iv2Y8g2YrZj9ir2YXZkNix2Y8g2KXZhtmSINiq2Y7Yttin2YHZjtix2Y4g2LXZjtmB2YjZj9mH2Y/YjCDZiNin2YTYudmO2LLZhdmPINmK2Y7YsdmB2LnZjyDYtdmO2LHYrdmOINmD2Y/ZhNmR2ZAg2KjZj9mG2YrYp9mG2ZAKLy8KLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICDZiNmO2YXYpyDZhtmO2YrZhNmPINin2YTZhdmO2LfYp9mE2ZDYqNmQINio2ZDYp9mE2KrZjtmF2Y7ZhtmR2YoKLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg2YjZjtmE2Y7Zg9mQ2YYg2KrZj9ik2K7Zjtiw2Y8g2KfZhNiv2Y/ZhtmK2Kcg2LrZkNmE2KfYqNinCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg2YjZjtmF2Kcg2KfZkNiz2KrZjti52LXZiSDYudmO2YTZiSDZgtmO2YjZhdmNINmF2Y7Zhtin2YTZjAovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg2KXZkNiw2Kcg2KfZhNil2ZDZgtiv2KfZhdmPINmD2KfZhtmOINmE2Y7Zh9mP2YUg2LHZkNmD2KfYqNinCi8vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLwojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2luY2x1ZGUgPGV4dC9wYl9kcy9hc3NvY19jb250YWluZXIuaHBwPgojaW5jbHVkZSA8ZXh0L3BiX2RzL3RyZWVfcG9saWN5LmhwcD4KCnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwoKLy8gVGVtcGxhdGUgZGVmaW5pdGlvbiBmb3Igb3JkZXJlZF9zZXQKdGVtcGxhdGU8dHlwZW5hbWUgVD4KdXNpbmcgb3JkZXJlZF9zZXQgPSB0cmVlPFQsIG51bGxfdHlwZSwgbGVzczxUPiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT47CgoKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgTk8gdm9pZChjb3V0IDw8ICJOT1xuIikKI2RlZmluZSBZRVMgdm9pZChjb3V0IDw8ICJZRVNcbiIpCiNkZWZpbmUgZW5kbCAoIlxuIikKY29uc3QgaW50IG9vID0gMWUxODsKY29uc3QgaW50IE4gPSAxZTYrNTsKCgpzdHJ1Y3QgU3BhcnNlVGFibGUgewogICAgaW50IG4sIExPRzsKICAgIHZlY3Rvcjx2ZWN0b3I8cGFpcjxpbnQsIGludD4+PiBzdDsKICAgIHZlY3RvcjxpbnQ+IGxnOwoKICAgIHBhaXI8aW50LCBpbnQ+IG1lcmdlKGNvbnN0IHBhaXI8aW50LCBpbnQ+JiBhLCBjb25zdCBwYWlyPGludCwgaW50PiYgYikgewogICAgICAgIGlmIChhLmZpcnN0ID49IGIuZmlyc3QpIHJldHVybiBhOwogICAgICAgIHJldHVybiBiOwogICAgfQoKICAgIFNwYXJzZVRhYmxlKGNvbnN0IHZlY3RvcjxpbnQ+JiBhKSB7CiAgICAgICAgbiA9IGEuc2l6ZSgpOwogICAgICAgIExPRyA9IDA7CiAgICAgICAgd2hpbGUgKCgxIDw8IExPRykgPD0gbikgTE9HKys7CgogICAgICAgIHN0LmFzc2lnbihMT0csIHZlY3RvcjxwYWlyPGludCwgaW50Pj4obikpOwogICAgICAgIGxnLmFzc2lnbihuICsgMSwgMCk7CgogICAgICAgIGZvciAoaW50IGkgPSAyOyBpIDw9IG47IGkrKykKICAgICAgICAgICAgbGdbaV0gPSBsZ1tpIC8gMl0gKyAxOwoKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgICAgICAgICAgc3RbMF1baV0gPSB7YVtpXSwgaX07CgogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgTE9HOyBpKyspIHsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogKyAoMSA8PCBpKSA8PSBuOyBqKyspIHsKICAgICAgICAgICAgICAgIHN0W2ldW2pdID0gbWVyZ2UoCiAgICAgICAgICAgICAgICAgICAgc3RbaSAtIDFdW2pdLAogICAgICAgICAgICAgICAgICAgIHN0W2kgLSAxXVtqICsgKDEgPDwgKGkgLSAxKSldCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8vIHF1ZXJ5IG9uIFtsLCByXSBpbmNsdXNpdmUgKDAtYmFzZWQpCiAgICBwYWlyPGludCwgaW50PiBxdWVyeShpbnQgbCwgaW50IHIpIHsKICAgICAgICBpbnQgbGVuID0gciAtIGwgKyAxOwogICAgICAgIGludCBpID0gbGdbbGVuXTsKICAgICAgICByZXR1cm4gbWVyZ2UoCiAgICAgICAgICAgIHN0W2ldW2xdLAogICAgICAgICAgICBzdFtpXVtyIC0gKDEgPDwgaSkgKyAxXQogICAgICAgICk7CiAgICB9Cn07Cgp2b2lkIEVMN0woKQp7CiAgICBpbnQgbiwgcTsgY2luID4+IG4gPj4gcTsKICAgIHZlY3RvcjxpbnQ+IGEobik7CiAgICBmb3IgKGF1dG8gJml0IDogYSkgY2luID4+IGl0OwogICAgU3BhcnNlVGFibGUgc3QoYSk7CgogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBwcmVmKG4sIHZlY3RvcjxpbnQ+KDIsIDApKSwgc3VmZihuLCB2ZWN0b3I8aW50PiAoMiwgMCkpOwogICAgZm9yIChpbnQgaSA9IG47IGkgPj0gMTsgaS0tKSB7CiAgICAgICAgaW50IGwgPSAxLCByID0gaSAtIDE7CiAgICAgICAgaW50IGFucyA9IDA7CiAgICAgICAgd2hpbGUgKGwgPD0gcikgewogICAgICAgICAgICBpbnQgbWlkID0gKGwrcik+PjE7CiAgICAgICAgICAgIGlmIChzdC5xdWVyeShtaWQsIGkgLSAxKS5maXJzdCA+IGFbaV0pIHsKICAgICAgICAgICAgICAgIGFucyA9IG1pZDsKICAgICAgICAgICAgICAgIGwgPSBtaWQgKyAxOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgciA9IG1pZCAtIDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcHJlZltpXVswXSA9IGFuczsKICAgIH0KICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGludCBsID0gaSArIDEsIHIgPSBuLCBhbnMgPSBuICsgMTsKICAgICAgICB3aGlsZSAobCA8PSByKSB7CiAgICAgICAgICAgIGludCBtaWQgPSAobCtyKT4+MTsKICAgICAgICAgICAgaWYgKHN0LnF1ZXJ5KGkgKyAxLCBtaWQpLmZpcnN0ID4gYVtpXSkgewogICAgICAgICAgICAgICAgYW5zID0gbWlkOwogICAgICAgICAgICAgICAgciA9IG1pZCAtIDE7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBsID0gbWlkICsgMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBzdWZmW2ldWzBdID0gYW5zOwogICAgfQoKCgogICAgd2hpbGUgKHEtLSkKICAgIHsKICAgICAgICBpbnQgbCwgcjsgY2luID4+IGwgPj4gcjsKICAgICAgICBsLS0sIHItLTsKCgoKCiAgICB9Cn0KCgoKCmludDMyX3QgbWFpbigpCnsKI2lmZGVmIE9OTElORV9KVURHRQogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiNlbmRpZiAvLyBPTkxJTkVfSlVER0UKICAgIC8vIGZyZW9wZW4oImZvb3QuaW4iLCAiciIsIHN0ZGluKTsKICAgIGludCB0ID0gMTsKICAgIGNpbiA+PiB0OwogICAgd2hpbGUgKHQtLSkKICAgICAgICBFTDdMKCk7CiAgICByZXR1cm4gMDsKfQ==