#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define ll long long
#define el "\n"
#define alla(a,n) a+1,a+n+1
#define fi first
#define se second
#define all(v) v.begin(),v.end()
#define fu(i,a,b) for(ll i=a;i<=b;i++)
#define fud(i,a,b) for(ll i=a;i>=b;i--)
const ll MOD=1e9+7 ;//1234567891;
const ll inf=1e18;
const ll base = 311;
const ll N=1e6+5;
const ll N1=1e3+5;
template <class T> bool mini(T &x, T y){return (x > y ? x = y, 1 : 0);}
template <class T> bool maxi(T &x, T y){return (x < y ? x = y, 1 : 0);}
template <class T> void add(T &x, ll y){x += y; if(x >= MOD) x -= MOD;}
template <class T> void sub(T &x, T y){x -= y; if(x < 0) x += MOD;}
/*v*/
int dx[8] = {1, -1, 0, 0, 1, 1, -1, -1},
dy[8] = {0, 0, 1, -1, 1, -1, 1, -1};
void rtn()
{
cerr<<el<<"time: "<<clock()<<"ms"<<el;
exit(0);
}
ll n,k;
ll a[N],nt[N];
void pre()
{
nt[0]=nt[1]=-1;
fu(i,2,1e6)
{
if(nt[i]==0) for(ll j=i;j<=1e6;j+=i) nt[j]=i;
}
}
namespace sub1
{
bool checksub()
{
return n<=1000;
}
void sol()
{
ll ans=0;
vector<ll> v;
fu(i,1,n)
{
ll prime=0,nonprime=0;
fu(j,i,n)
{
if(nt[a[j]]==a[j]) prime++;
else nonprime++;
if(prime==2*nonprime)
{
if(maxi(ans,j-i+1))
{
v.clear();
v.pb(i);
}
else if(ans==j-i+1)
{
v.pb(i);
}
}
}
}
cout<<ans<<el;
for(auto it:v) cout<<it<<" ";
}
}
namespace sub2
{
ll pre[N];
ll cur[N];
bool check(ll x)
{
fu(i,1,n-x+1)
{
if(pre[i+x-1]-pre[i-1]==(x-x/(k+1))) return 1;
}
return 0;
}
void sol()
{
fu(i,1,n) pre[i]=pre[i-1]+(nt[a[i]]==a[i]);
ll ans=0;
vector<ll> v;
fu(i,1,n/(k+1)) v.pb((k+1)*i);
ll l=0,r=v.size()-1;
while(l<=r)
{
ll mid=(l+r)>>1;
if(check(v[mid])) l=mid+1;
else r=mid-1;
}
cout<<v[l-1]<<el;
fu(i,1,n-v[l-1]+1)
{
if(pre[i+v[l-1]-1]-pre[i-1]==v[l-1]-v[l-1]/(k+1)) cout<<i<<" ";
}
}
}
signed main(void)
{
#define TASK "R11AEVOD"
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);srand(time(0));
if(fopen(TASK".inp","r"))
{
freopen(TASK".inp" ,"r",stdin) ; freopen(TASK".out" ,"w",stdout);
}
pre();
cin>>n>>k;
fu(i,1,n) cin>>a[i];
// if(sub1::checksub()) return sub1::sol(),0;
return sub2::sol(),0;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgcGIgIHB1c2hfYmFjayAgCiNkZWZpbmUgbGwgIGxvbmcgbG9uZwojZGVmaW5lIGVsICAiXG4iCiNkZWZpbmUgYWxsYShhLG4pICBhKzEsYStuKzEKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGFsbCh2KSAgdi5iZWdpbigpLHYuZW5kKCkKI2RlZmluZSBmdShpLGEsYikgIGZvcihsbCBpPWE7aTw9YjtpKyspCiNkZWZpbmUgZnVkKGksYSxiKSAgZm9yKGxsIGk9YTtpPj1iO2ktLSkKCmNvbnN0IGxsIE1PRD0xZTkrNyA7Ly8xMjM0NTY3ODkxOwpjb25zdCBsbCBpbmY9MWUxODsKY29uc3QgbGwgYmFzZSA9IDMxMTsKY29uc3QgbGwgTj0xZTYrNTsKY29uc3QgbGwgTjE9MWUzKzU7CnRlbXBsYXRlIDxjbGFzcyBUPiBib29sIG1pbmkoVCAmeCwgVCB5KXtyZXR1cm4gKHggPiB5ID8geCA9IHksIDEgOiAwKTt9CnRlbXBsYXRlIDxjbGFzcyBUPiBib29sIG1heGkoVCAmeCwgVCB5KXtyZXR1cm4gKHggPCB5ID8geCA9IHksIDEgOiAwKTt9CnRlbXBsYXRlIDxjbGFzcyBUPiB2b2lkIGFkZChUICZ4LCBsbCB5KXt4ICs9IHk7IGlmKHggPj0gTU9EKSB4IC09IE1PRDt9CnRlbXBsYXRlIDxjbGFzcyBUPiB2b2lkIHN1YihUICZ4LCBUIHkpe3ggLT0geTsgaWYoeCA8IDApIHggKz0gTU9EO30KLyp2Ki8KaW50IGR4WzhdID0gezEsIC0xLCAwLCAwLCAxLCAxLCAtMSwgLTF9LAogICAgZHlbOF0gPSB7MCwgMCwgMSwgLTEsIDEsIC0xLCAxLCAtMX07Cgp2b2lkIHJ0bigpCnsKICAgIGNlcnI8PGVsPDwidGltZTogIjw8Y2xvY2soKTw8Im1zIjw8ZWw7CiAgICBleGl0KDApOwp9CgpsbCBuLGs7CmxsIGFbTl0sbnRbTl07Cgp2b2lkIHByZSgpCnsKCW50WzBdPW50WzFdPS0xOwoJZnUoaSwyLDFlNikKCXsKCQlpZihudFtpXT09MCkgZm9yKGxsIGo9aTtqPD0xZTY7ais9aSkgbnRbal09aTsKCX0KfQoKbmFtZXNwYWNlIHN1YjEKewoJYm9vbCBjaGVja3N1YigpCgl7CgkJcmV0dXJuIG48PTEwMDA7Cgl9CgoJdm9pZCBzb2woKQoJewoJCWxsIGFucz0wOwoJCXZlY3RvcjxsbD4gdjsKCQlmdShpLDEsbikKCQl7CgkJCWxsIHByaW1lPTAsbm9ucHJpbWU9MDsKCQkJZnUoaixpLG4pCgkJCXsKCQkJCWlmKG50W2Fbal1dPT1hW2pdKSBwcmltZSsrOwoJCQkJZWxzZSBub25wcmltZSsrOwoJCQkJaWYocHJpbWU9PTIqbm9ucHJpbWUpCgkJCQl7CgkJCQkJaWYobWF4aShhbnMsai1pKzEpKQoJCQkJCXsKCQkJCQkJdi5jbGVhcigpOwoJCQkJCQl2LnBiKGkpOwoJCQkJCX0KCQkJCQllbHNlIGlmKGFucz09ai1pKzEpCgkJCQkJewoJCQkJCQl2LnBiKGkpOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCQljb3V0PDxhbnM8PGVsOwoJCWZvcihhdXRvIGl0OnYpIGNvdXQ8PGl0PDwiICI7Cgl9Cn0KCm5hbWVzcGFjZSBzdWIyCnsKCWxsIHByZVtOXTsKCWxsIGN1cltOXTsKCglib29sIGNoZWNrKGxsIHgpCgl7CgkJZnUoaSwxLG4teCsxKQoJCXsKCQkJaWYocHJlW2kreC0xXS1wcmVbaS0xXT09KHgteC8oaysxKSkpIHJldHVybiAxOwoJCX0KCQlyZXR1cm4gMDsKCX0KCgl2b2lkIHNvbCgpCgl7CgkJZnUoaSwxLG4pIHByZVtpXT1wcmVbaS0xXSsobnRbYVtpXV09PWFbaV0pOwoJCWxsIGFucz0wOwoJCXZlY3RvcjxsbD4gdjsKCQlmdShpLDEsbi8oaysxKSkgdi5wYigoaysxKSppKTsKCQlsbCBsPTAscj12LnNpemUoKS0xOwoJCXdoaWxlKGw8PXIpCgkJewoJCQlsbCBtaWQ9KGwrcik+PjE7CgkJCWlmKGNoZWNrKHZbbWlkXSkpIGw9bWlkKzE7CgkJCWVsc2Ugcj1taWQtMTsKCQl9CgkJY291dDw8dltsLTFdPDxlbDsKCQlmdShpLDEsbi12W2wtMV0rMSkKCQl7CgkJCWlmKHByZVtpK3ZbbC0xXS0xXS1wcmVbaS0xXT09dltsLTFdLXZbbC0xXS8oaysxKSkgY291dDw8aTw8IiAiOwoJCX0KCX0KfQoKc2lnbmVkIG1haW4odm9pZCkKewogICAgI2RlZmluZSBUQVNLICAiUjExQUVWT0QiCiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7c3JhbmQodGltZSgwKSk7IAogICAgaWYoZm9wZW4oVEFTSyIuaW5wIiwiciIpKQogICAgewogICAgICAgIGZyZW9wZW4oVEFTSyIuaW5wIiAsInIiLHN0ZGluKSA7IGZyZW9wZW4oVEFTSyIub3V0IiAsInciLHN0ZG91dCk7CiAgICB9CgogICAgcHJlKCk7CiAgICBjaW4+Pm4+Pms7CiAgICBmdShpLDEsbikgY2luPj5hW2ldOwoKICAgIC8vIGlmKHN1YjE6OmNoZWNrc3ViKCkpIHJldHVybiBzdWIxOjpzb2woKSwwOwogICAgcmV0dXJuIHN1YjI6OnNvbCgpLDA7CgogICAgCiAgICByZXR1cm4gMDsKfQ==