func_code_string: #include <bits/stdc++.h>   #define PI atan(1.0)*4   #define rp(i,s,t) for (register int i = (s); i <= (t); i++)   #define RP(i,t,s) for (register int i = (t); i >= (s); i--)   #define sc(x) scanf( %d ,&x)   #define scl(x) scanf( %lld ,&x)   #define ll long long   #define ull unsigned long long   #define mst(a,b) memset(a,b,sizeof(a))   #define lson l,m,rt<<1   #define rson m+1,r,rt<<1|1   #define pii pair<int,int>   #define pll pair<ll,ll>   #define pil pair<int,ll>   #define m_p make_pair   #define p_b push_back   #define ins insert   #define era erase   #define INF 0x3f3f3f3f   #define LINF 0x3f3f3f3f3f3f3f3f   #define dg if(debug)   #define outval(a) cout <<  Debuging...|  << #a <<  :   << a <<   n ;   using namespace std;   int debug = 0;   ll gcd(ll a,ll b){    return b?gcd(b,a%b):a;   }   ll lcm(ll a,ll b){    return a/gcd(a,b)*b;   }   inline int read(){    int s=0,f=1;    char ch=getchar();    while(ch< 0 ||ch> 9 ){     if(ch== - ) f=-1;     ch=getchar();    }    while(ch>= 0 &&ch<= 9 ){     s=s*10+ch- 0 ;     ch=getchar();    }    return s*f;   }   const int N = 1e6+7;   const double eps = 1e-7;   int a[N];   int f[N];   void solve(){    int n=read(),m=read();    rp(i,1,n) a[i]=read();    rp(i,1,n) f[i]=0;    RP(i,n,1){     if(a[i]!=i) break;     else f[i]=1;    }    int flag=1;    rp(i,1,n){     if(f[i]==0){      flag=0;     }    }    double ans=0.0;    double cur=1;    int ff=0;    rp(i,1,m){     int r;double p;     scanf( %d%lf ,&r,&p);     // printf( %d %lf n ,r,p);     if(r==n||f[r+1]){      ans+=cur*p;      cur*=(1.0-p);      if(fabs(p-1.0)<=eps) ff=1;     }    }    if(ff||flag){     printf( 1.000000 n );     return ;    }    printf( %.6f n ,ans);   }   int main(){    //ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);   #ifdef ONLINE_JUDGE   #else    freopen( in.txt ,  r , stdin);    //debug = 1;   #endif    time_t beg, end;    //if(debug) beg = clock();       int T=read();    while(T--) solve();       /*    if(debug) {     end = clock();     printf( time:%.2fs n , 1.0 * (end - beg) / CLOCKS_PER_SEC);    }    */    return 0;   }