//费解的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;
}