#include<bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(true);
long long t;
cin>>t;
long long n;
while(t--)
{
cin>>n;
long long x[n];
for(long long i=0;i<n;i++)
{
cin>>x[i];
}
long long mx=0;
long long mxr[n];
map<long long,long long>m1;
map<long long,long long>m2;
long long a[n];
long long b[n];
long long mxl[n];
for(long long i=n-1;i>=0;i--)
{
m2[x[i]]++;
b[i]=m2.size();
mx=max(mx,x[i]);
mxr[i]=mx;
}
mx=0;
for(long long i=0;i<n;i++)
{
m1[x[i]]++;
a[i]=m1.size();
mx=max(mx, x[i]);
mxl[i]=mx;
}
vector<pair<long long,long long>>ans;
for(long long i=0;i<n-1;i++)
{
if(a[i]==i+1 && mxl[i]==i+1 && b[i+1]==n-i-1 && mxr[i+1]==n-i-1)
{
ans.push_back({i+1,n-i-1});
}
}
cout<<ans.size()<<endl;
for(auto pom:ans)
{
cout<<pom.first<<" "<<pom.second<<endl;
}
}
}
136. Single Number | 169. Majority Element |
119. Pascal's Triangle II | 409. Longest Palindrome |
1574A - Regular Bracket Sequences | 1574B - Combinatorics Homework |
1567A - Domino Disaster | 1593A - Elections |
1607A - Linear Keyboard | EQUALCOIN Equal Coins |
XOREQN Xor Equation | MAKEPAL Weird Palindrome Making |
HILLSEQ Hill Sequence | MAXBRIDGE Maximise the bridges |
WLDRPL Wildcard Replacement | 1221. Split a String in Balanced Strings |
1002. Find Common Characters | 1602A - Two Subsequences |
1555A - PizzaForces | 1607B - Odd Grasshopper |
1084A - The Fair Nut and Elevator | 1440B - Sum of Medians |
1032A - Kitchen Utensils | 1501B - Napoleon Cake |
1584B - Coloring Rectangles | 1562B - Scenes From a Memory |
1521A - Nastia and Nearly Good Numbers | 208. Implement Trie |
1605B - Reverse Sort | 1607C - Minimum Extraction |