#include #define endl '\n' using namespace std; typedef long long ll; ll i,j,p,q,n,m,k,t,tt; struct Pic { ll l,r,st,na; }a[5006]; ll calc(ll m, ll n) { ll pa = 1; for (ll ii = n; ii < (m + n - 1); ii++) { pa *= ii; pa /= (ii - n + 1); } return pa; } bool fff(Pic a,Pic b) { if(a.l!=b.l)return (a.l>t; for(tt=1;tt<=t;tt++) { fin>>n>>m>>k; for(i=1;i<=k;i++) { fin>>a[i].l>>a[i].r; a[i].st=0;a[i].na=0; } sort(a+1,a+k+1,fff); a[1].st=1;a[1].na=1; for(i=2;i<=k;i++) { vector v;p=0; for(j=i-1;j>=1;j--) { if(a[j].l<=a[i].l && a[j].r<=a[i].r) { if(a[j].st>p) { p=a[j].st; v.clear(); v.push_back(j); } else if(a[j].st==p) { v.push_back(j); } } } a[i].st=p+1; for(int j:v) { a[i].na+=calc(a[i].l-a[j].l+1,a[i].r-a[j].r+1)*a[j].na; } //fout<