code:
#include <bits/stdc++.h>
#define N 100005
#define mod 100003
#define LL long long
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
LL fac[N],inv[N],dp[N];
int sta[N],v[N];
LL qpow(LL x,LL y)
{
LL tmp=1ll;
for(;y;y>>=1,x=x*x%mod) if(y&1) tmp=tmp*x%mod;
return tmp;
}
LL Inv(LL x) { return qpow(x,mod-2); }
int main()
{
// setIO("input");
int i,j,n,k,stp=0;
scanf("%d%d",&n,&k);
fac[0]=inv[0]=1ll;
for(i=1;i<=n;++i) fac[i]=fac[i-1]*1ll*i%mod,inv[i]=Inv(fac[i]);
for(i=1;i<=n;++i) scanf("%d",&sta[i]);
for(i=n;i>=1;--i)
{
sta[i]^=v[i];
if(sta[i])
{
++stp;
for(j=1;j*j<=i;++j) if(i%j==0)
{
v[j]^=1;
if(j!=i/j) v[i/j]^=1;
}
}
}
// printf("%d\n",stp);
// dp[n]=1;
for(i=n;i>=1;--i) dp[i]=(dp[i+1]*1ll*(n-i)%mod+n)%mod*qpow(i,mod-2)%mod;
LL ans=0ll;
if(stp<=k) ans=stp;
else
{
for(i=stp;i>k;--i) ans=(ans+dp[i])%mod;
ans=(ans+k)%mod;
}
for(i=1;i<=n;++i) ans=ans*1ll*i%mod;
printf("%lld\n",ans);
return 0;
}