d[3000][40];x,n,i,j,k,t,m=1e9+7;long p(a,n){return n?a*p(a,n-1)%m:1;}f(s,x,y){for(y=0;d[++y][0]&&d[y][0]-s;t=0);d[y][0]=s;d[y][x]++;}main(s){for(scanf("%*d%d",&n);~scanf("%d",&s);f(s,1))for(k=2;s%k<1?s/=k,++t:(t&&f(k,t),s>k*k++););for(s=1;x=d[++i][0]?:!printf("%d",s);s=s*p(x,k)%m)for(k=t=0,j=30;t