#include #include #include #include #include #define ll long long #define mst(a,x) memset(a,x,sizeof(a)) #define For(i,n) for(int i=0; i 1 && mn[i] > mn[i - 1]) fail = 1; } for(int i = 1; i <= n; i++) { scanf("%d", mx + i); if(i > 1 && mx[i] < mx[i - 1]) fail = 1; } if(fail) return 0; // puts("not fail"); int ans = 1; for(int i = 1; i <= n; i++) { if(mn[i] != mn[i - 1] && mx[i] != mx[i - 1] && mn[i] != mx[i]) return 0; if(mn[i] > mx[i]) return 0; if(mn[i] != mn[i - 1] || mx[i] != mx[i - 1]) continue; int cnt = mx[i] - mn[i] + 1 - (i - 1); ans = (ll)ans * cnt % MOD; } return ans; } int main() { int T; scanf("%d", &T); while(T--) { scanf("%d", &n); printf("%d\n", solve()); } return 0; }