#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,k,a[5],m=998244353;
struct node{
ll a[6][6];
node(){memset(a,0,sizeof(a));}
node set(){a[0][0]=a[1][1]=a[2][2]=a[3][3]=a[4][4]=a[5][5]=1;}
}s[4],ans,b,r,e;
node operator*(const node &x,const node &y){
node z;
for(ll i=0;i<=5;i++)
for(ll j=0;j<=5;j++)
for(ll k=0;k<=5;k++)z.a[i][j]=(z.a[i][j]+x.a[i][k]*y.a[k][j])%m;
return z;
}
node qp(node x,ll y){
node ans;
ans=e;
while(y){
if(y&1ll)ans=x*ans;
x=x*x;
y>>=1ll;
}return ans;
}
int main(){
cin>>n>>k;
s[1].a[0][1]=s[1].a[1][2]=s[1].a[2][3]=s[1].a[3][4]=s[1].a[4][5]=s[1].a[5][5]=s[2].a[1][0]=s[2].a[0][1]=s[2].a[2][1]=s[2].a[3][2]=s[2].a[4][3]=s[2].a[5][4]=s[3].a[0][1]=s[3].a[1][2]=s[3].a[2][3]=s[3].a[3][4]=s[3].a[4][5]=s[3].a[5][5]=1,s[3].a[1][0]=s[3].a[0][1]=s[3].a[2][1]=s[3].a[3][2]=s[3].a[4][3]=s[3].a[5][4]=1,b.set();
e.set(),b=e;
for(int i=1;i<=4;i++)cin>>a[i],b=b*s[a[i]];
r.a[0][k]=1;
ans=r*qp(b,n/4);
for(int i=0;i<n%4;i++)ans=ans*s[a[i+1]];
cout<<(ans.a[0][0]+ans.a[0][1]+ans.a[0][2]+ans.a[0][3]+ans.a[0][4]+ans.a[0][5])%m;
return 0;
}