#include using namespace std; #define MAX 300003 struct X { int s; int p; bool b; } pole[MAX]; pair nas[MAX]; int n, q; int out[MAX]; void f(int kde, int cyk, int mod) { if(kde > MAX or pole[kde].b) return; pole[kde].b=1; if(pole[kde].s==0) { while(mod < q) { out[mod] = kde; mod += cyk; if(cyk==0) break; } return; } for(int i = pole[kde].p; i < pole[kde+1].p; i++) { if (i > n) return; f(nas[i].second, pole[kde].s*cyk, mod+(i-pole[kde].p)*cyk); } } int main() { cin >> n >> q; while(n>=MAX or q>=MAX) { return 0; } for(int i=1; i> nas[i-1].first; if(nas[i-1].first>=i)return 0; pole[nas[i-1].first].s++; nas[i-1].second = i; } sort(nas, nas+n-1); for(int i=0; i