#include <bits/stdc++.h>
#define mod 998244353
#define maxM 100005

using namespace std;

int b[maxM],i,j,n,m;
vector <int> ans;

vector <int> pomnozi(vector <int> a,int k){
int i;
for(i=1;i<=m;i++){
    a[k+b[i]]=a[k+i];
}
return a;
}

vector <int> resi(int s){
int i;
vector <int> ans,tmp;
if(s==0){
    for(i=0;i<=n;i++) ans.push_back(i);
    return ans;
}
ans=tmp=resi(s/2);
for(i=1;i<=n-s/2;i++){
    ans[i+s/2]=tmp[s/2+tmp[i]];
}
if(s%2) ans=pomnozi(ans,s-1);
return ans;
}

vector <int> resi1(int s){
int i;
vector <int> ans,tmp;
if(s==0){
    for(i=0;i<=2*m+5;i++) ans.push_back(i);
    return ans;
}
ans=tmp=resi1(s/2);
for(i=tmp.size();ans.size()<=min(n,(m+s)+10);i++){
    ans.push_back(i);
    tmp.push_back(i);
}
for(i=1;i<=min(n,m+s+10)-s/2;i++){
    ans[i+s/2]=tmp[s/2+tmp[i]];
}
if(s%2) ans=pomnozi(ans,s-1);
return ans;
}

long long res,c,x;

int main()
{
    std::ios_base::sync_with_stdio(false);
    cin>>n>>m;
    for(i=1;i<=m;i++){
        cin>>b[i];
    }
    cin>>c;
    if(n<=500000) ans=resi(n-m+1);
    else ans=resi1(n-m+1);
    x=1;
    for(i=1;i<=n;i++){
       x=(x*c+mod)%mod;
       res=((res+x*ans[i])%mod+mod)%mod;
    }
    cout<<res<<endl;
    return 0;
}