#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
const long long mod = 998244353;
int t, k, n, num;
int a[N], d[N], flag[N];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  scanf("%d", &t);
  while (t--) {
    scanf("%d %d", &n, &k);
    for (int i = 1; i <= n; i++) {
      scanf("%d", &a[i]);
      d[a[i]] = i;
    }
    for (int i = 1; i <= k; i++) {
      int x;
      scanf("%d", &x);
      flag[d[x]] = i;
    }
    long long ans = 1;
    for (int i = 1; i <= n; i++) {
      if (flag[i]) {
        if (i == 1 || i == n) {
          if (flag[i] < flag[i == 1 ? 2 : n - 1]) ans = 0;
        } else {
          if (flag[i] < flag[i - 1] && flag[i] < flag[i + 1])
            ans = 0;
          else if (flag[i] > flag[i - 1] && flag[i] > flag[i + 1]) {
            ans *= 2;
            ans %= mod;
          }
        }
      }
      if (!ans) break;
    }
    printf("%lld\n", ans);
    for (int i = 1; i <= n; i++) flag[i] = 0;
  }
  return 0;
}
