#include<bits/stdc++.h>
#define int long long
#define fast register int
using namespace std;
const int N=1e3+10,MOD=998244353;
int n,m,l[N],r[N],ans=0,s[N];
bool flag[N][N],f[N];
signed main(){
std::ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n>>m;
s[1]=1;
for (fast i=2;i<=n;i++){
s[i]=2*s[i-1]%MOD+1;
s[i]%=MOD;
}
for (fast i=1;i<=n;i++){
cin>>l[i]>>r[i];
for (fast j=l[i];j<=r[i];j++){
flag[j][i]=true;
}
}
for (fast i=1;i<=m;i++){
int x; cin>>x;
int cnt=0,cnt1=0;
for (fast j=1;j<=n;j++){
if (flag[x][j]==true&&f[j]==false){
f[j]=true;
cnt++;
}
else if (flag[x][j]==true&&f[j]==true){
cnt1++;
}
}
ans+=s[cnt+cnt1]%MOD-s[cnt1]%MOD;
}
cout<<ans;
return 0;
}