#include using namespace std; #define MAX 31234567 struct X { int s; int ub; int c; int m; } pole[MAX]; int pre[MAX]; int n, q; int pom; int out[MAX]; int main() { cin >> n >> q; while(n>=MAX or q>=MAX) { return 0; } for(int i=1; i> pom; pole[pom].s++; pre[i]=pom; } pole[0].c=1; pole[0].m=0; for(int 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