#include using namespace std; typedef long long int ll; const ll modulo = 1000*1000*1000+7; vector m; vector> emplacements; vector> dyn; int n; int find_inc_seq_border(int i_from) { int i = i_from + 1; while (i < n) { if (m[i] > m[i-1]) ++i; else break; } return i; } ll rec(int i_cur, int max_size, int i_border) { if (i_cur == n) return 1ll; if (dyn[i_cur][max_size] == -1) { if (i_cur == i_border) i_border = find_inc_seq_border(i_border); ll ans = 0; for(int i=i_cur; i> n; m.resize(n); emplacements.resize(n); dyn.resize(n); for(int i=0; i> m[i]; for(int i=0; i