#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef long double ld; typedef pair ii; typedef vector vi; typedef vector vvi; typedef vector vii; #define x first #define y second #define pb push_back #define eb emplace_back #define rep(i,a,b) for(auto i=(a); i<(b); ++i) #define REP(i,n) rep(i,0,n) #define all(v) (v).begin(), (v).end() #define rs resize #define DBG(x) cerr << __LINE__ << ": " << #x << " = " << (x) << endl const ld PI = acos(-1.0); template using min_queue = priority_queue, greater>; template int sz(const T &x) { return (int) x.size(); // copy the ampersand(&)! } // START OF ACTUAL PROGRAM, START READING HERE void run() { ll n, c; cin >> n >> c; vvi A(n+1, vi(n+1, 0)); for (ll l = 0; l <= n-1; l++) { for (ll x = 1; x+l <= n; x++) { ll y = x+l; ll v = n*c+100000000; for (ll m = x; m <= y; m++) { ll vm = m; if (m-1 >= x) vm = max(m+A[x][m-1], vm); if (m+1 <= y) vm = max(c+A[m+1][y], vm); v = min(v, vm); } A[x][y] = v; } } cout << A[1][n] << endl; } signed main() { // DON'T MIX "scanf" and "cin"! ios_base::sync_with_stdio(false); cin.tie(NULL); cout << fixed << setprecision(20); run(); return 0; }