#include "bits/stdc++.h"
#include "souvenirs.h"
using namespace std;
typedef long long ll;
#define endl '\n'
#define pb push_back
#define ff first
#define ss second
#define all(a) a.begin(),a.end()
const int maxN=105;
bool vis[maxN];
int cnt[maxN], n;
ll p[maxN];
pair<vector<int>,ll> transaction(ll m);
void price(ll M){
auto P=transaction(M);
vector<int> v=P.ff;
ll sum=M-P.ss;
for(auto it=v.begin();it!=v.end();it++) cnt[*it]++;
while(v.size()>1){
if(vis[v.back()]){
sum-=p[v.back()];
v.pop_back();
continue;
}
price(sum/v.size());
}
vis[v[0]]=1,p[v[0]]=sum;
for(int i=v[0]+1;i<n;i++) if(!vis[i]) price(p[i-1]-1);
}
void buy_souvenirs(int N, ll p0){
n=N;
vis[0]=1, p[0]=p0;
price(p0-1);
for(int i=0;i<n;i++){
while(cnt[i]<i){
transaction(p[i]);
cnt[i]++;
}
}
return;
}