#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 100 + 10;
const int mod = 998244353;
int n,m,k,p[55],a[55];
struct Matrix {
int n, m;
long long a[maxn][maxn];
Matrix() { memset(a, 0, sizeof a); }
Matrix(int _n, int _m) {
n = _n;
m = _m;
memset(a, 0, sizeof a);
}
void scan() {
cin >> n >> m;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++) cin >> a[i][j];
}
void print() {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) cout << a[i][j] << ' ';
cout << endl;
}
}
};
Matrix mul(Matrix &a, Matrix &b) {
Matrix res(a.n, b.m);
for (int i = 0; i < a.n; i++)
for (int j = 0; j < b.m; j++)
for (int k = 0; k < a.m; k++)
(res.a[i][j] += a.a[i][k] * b.a[k][j] % mod) %= mod;
return res;
}
Matrix Pow(Matrix &ans ,int n)
{
Matrix res(ans.n,ans.n);
for(int i=0;i<res.n;i++)
{
res.a[i][i]=1;
}
while(n!=0)
{
if(n&1) res=mul(res,ans);
ans=mul(ans,ans);
n>>=1;
}
return res;
}
int ksm(int x,int y)
{
int a=1,b=x;
while(y>0)
{
if(y%2==1)
{
a=a*b;
a=a%mod;
}
b=b*b;
b=b%mod;
y=y/2;
}
return a;
}
signed main() {
cin>>n>>m>>k;
for(int i=1;i<=m;i++) cin>>p[i];
for(int i=0;i<=k;i++) cin>>a[i];
Matrix anss(2*(k+1),2*(k+1)),base(1,2*(k+1));
for(int i=0;i<2*(k+1);i++) base.a[0][i]=1;
anss.a[0][0]=1;
anss.a[0][k+1]=1;
for(int i=0;i<=k;i++)
{
for(int j=1;j<=k;j++)
{
if(i==0) anss.a[i][j]=anss.a[i][j-1];
else anss.a[i][j]=anss.a[i][j-1]+anss.a[i-1][j-1];
anss.a[i][j]%=mod;
anss.a[i][k+j+1]=anss.a[i][j];
}
}
for(int i=k+1;i<2*(k+1);i++) anss.a[i][i]=1;
anss=Pow(anss,n-1);
base=mul(base,anss);
int sum=0;
for(int i=k+1;i<2*(k+1);i++) sum+=a[i-k-1]*base.a[0][i],sum%=mod;
int inv=ksm(sum,mod-2);
Matrix ans(k+m+2,k+m+2),bs(1,k+m+2);
ans.a[0][0]=1,bs.a[0][0]=1;
for(int i=0;i<=k;i++)
{
for(int j=1;j<=k;j++)
{
if(i==0) ans.a[i][j]=ans.a[i][j-1];
else ans.a[i][j]=ans.a[i][j-1]+ans.a[i-1][j-1];
ans.a[i][j]%=mod;
}
}
for(int i=k+1;i<k+m;i++) ans.a[i+1][i]=1;
for(int i=0;i<=k;i++) ans.a[i][k+m]=inv*a[i]%mod;
for(int i=k+1;i<=k+m;i++)ans.a[i][k+m]=p[k+m-i+1];
ans.a[k+m][k+m+1]=ans.a[k+m+1][k+m+1]=1;
ans=mul(ans,ans);
ans=Pow(ans,n);
bs=mul(bs,ans);
cout<<bs.a[0][k+m+1];
return 0;
}