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