#include template inline void read(T& t) { t=0; bool f=false; char ch; while(ch=getchar(),!((ch>='0'&&ch<='9')||ch=='-')); if(ch=='-') f=true,ch=getchar(); t=ch-'0'; while(ch=getchar(),ch>='0'&&ch<='9') t=t*10+ch-'0'; if(f) t=-t; } template inline void read(T& t,Args&... args) { read(t); read(args...); } const int maxn=24,P=1e9+7; int n,m,b[2],f[1<0) read(b[0]); if(m>1) read(b[1]); f[0]=1; for(int i=1;i<(1<=P) f[i]-=P; k^=j; } } printf("%d\n",f[(1<