#include using namespace std; #define MAX 300001 struct X { long long s; long long ub; long long c; long long m; } pole[MAX]; long long pre[MAX]; long long n, qe; long long pom; long long out[MAX]; int main() { cin >> n >> qe; while(n>=MAX or qe>=MAX) { return 0; } for(long long i=1; i> pom; pole[pom].s++; pre[i]=pom; } pole[0].c=1; pole[0].m=0; for(long long i=0; i0) { pole[kde].c = pole[pre[kde]].s*pole[pre[kde]].c; pole[kde].m = pole[pre[kde]].ub*pole[pre[kde]].c+pole[pre[kde]].m; pole[pre[kde]].ub++; } //cout << kde << " " << pole[kde].c << " " << pole[kde].m << endl; if(pole[kde].s==0) { while(pole[kde].m q) break; } } } for(long long i=0; i