#include "souvenirs.h"
#include <iostream>
#include <utility>
#include <vector>
#define ll long long
ll ng;
std::pair<std::vector<int>,long long> res;
std::vector<int> total;
void wrap(ll ts){
//std::cout << ts << ' ';
res = transaction(ts);
for(int i=0;i<res.first.size();i++){
total[res.first[i]]+=1;
}
}
bool reallystupidcheck(){
return (res.first.size()>1||res.second>0);
}
bool anotherreallystupidcheck(){
for(int i=0;i<ng;i++){
if(total[i]!=i)return false;
}
return true;
}
void buy_souvenirs(int N, long long P0) {
ng=N;
total.resize(N+4);
int last= P0-1;
int num=1;
while(!anotherreallystupidcheck()){
wrap(last);
bool res = reallystupidcheck();
if(res)last-=1;
last=std::max(last,1);
if(num==N){
while(!anotherreallystupidcheck()){
wrap(last);
}
}
for(int i=1;i<num;i++)wrap(last);
num+=1;
last-=1;
last=std::max(last,1);
}
return;
}