//费解的gcd—非线段数解法,希望能帮到大家。
#include<bits/stdc++.h>
using namespace std;#define int long long
const int mod=998244353;
const int n=1e6+11;
int a,b,c[n],d[n],e[n];
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>a>>b;
int g=0;
for(int i=1;i<=a;i++)
{
cin>>c[i];
d[i]=c[i];
}
for(int i=1;i<=b;i++)
{
cin>>e[i];
if(e[i]!=0)
{
d[e[i]]=0;
}
}
for(int i=1;i<=a;i++)
{
g=__gcd(g,d[i]);
}
int ff=g/mod;
// cout<<ff<<endl;
int an=0;
for(int i=b;i>=1;i--)
{
if(e[i]==0)
{
an=(an+g)%mod;
}
else
{
g=__gcd(g,c[e[i]]);
}
}
cout<<an<<endl;
}