#include using namespace std; using ll=long long; using pll=pair; using tll=tuple; using ld=long double; const ll INF=(1ll<<60); #define rep(i,n) for (ll i=0;i<(ll)(n);i++) #define all(v) v.begin(),v.end() template void chmin(T &a,T b){ if(a>b){ a=b; } } template void chmax(T &a,T b){ if(a> s; ll n=s.size(); vector> dp(n,vector(n,false)); rep(i,n) dp[i][i]=true; for(ll i=n-1;0<=i;i--){ for(ll j=i;j> v(n); rep(i,n){ rep(j,n){ if(dp[i][j]) v[i].push_back(j); } } vector> dp2(n+1,vector(n+1,false)); dp2[0][n]=true; rep(i,n){ rep(j,n+1){ if(!dp2[i][j]) continue; for(auto &k:v[i]){ dp2[k+1][min(j,k-i+1)]=true; } } } ll ans=1; rep(i,n+1){ if(dp2[n][i]) chmax(ans,i); } cout << ans << '\n'; }