voidcmp(int**i,int**j){int*tmp =*i;*i =*j;*j = tmp;}voidquick_sort(int**q,int l,int r){if(l >= r)return;int i = l -1, j = r +1, x = q[(l + r)>>1][0];while(i < j){do i++;while(q[i][0]< x);do j--;while(q[j][0]> x);if(i < j)cmp(&q[i],&q[j]);}quick_sort(q, l, j);quick_sort(q, j +1, r);}longlongqmi(longlong a,longlong b,int mod){longlong res =1% mod;while(b){if(b &1) res =(res * a)% mod;
a = a * a % mod;
b >>=1;}return res;}intcountWays(int** ranges,int rangesSize,int* rangesColSize){constint mod =1e9+7;int st =-1, ed =-1;longlong res =0;quick_sort(ranges,0, rangesSize -1);for(int i =0; i < rangesSize;++i){int seg = ranges[i][0];if(seg <= ed) ed =fmax(ed, ranges[i][1]);else{
res++;
st = seg;
ed = ranges[i][1];}}
res =qmi(2, res, mod);return res % mod;}