d[99999][40];n,i,k,t,m=1e9+7,z=4e4;long p(a,n){return n?a*p(a,n-1)%m:1;}main(s){for(scanf("%*d%d",&n);~scanf("%d",&i);i>1?d[z][1]=1,d[z++][0]=i:0)for(k=2;i%k<1?i/=k,++t:(d[k][t]++,t=0,++k<4e4););for(;--z;s=s*p(z<4e4?z:d[z][0],k)%m)for(k=t=0,i=30;t