#include <bits/stdc++.h>
#include "souvenirs.h"
using namespace std;
using ll = long long;
void buy_souvenirs(int N, long long P0) {
  if (N == 2) {
    pair<vector<int>, ll> p = transaction(P0 - 1);
  } else if (N == 3) {
    auto [v, s] = transaction(P0 - 1);
    if ((int)v.size() == 1) {
      transaction(P0 - s - 2);
      transaction(P0 - s - 2);
    } else {
      transaction((P0 - 1 - s) / 2);
    }
  } else {
    long long z = P0 - 1;
    int p = 0;
    for (int i = 1; i < N - 1; i++) {
      auto [v, s] = transaction(z);
      if ((int)v.size() == 2 || s == 1) {
        p++;
        z--;
        for (int j = 1; j < i; j++) {
          transaction(z);
        }
        z--;
      } else {
        for (int j = 1; j < i; j++) {
          transaction(z);
        }
        z--;
      }
    }
    for (int i = 0; i < N - 1 - p; i++) {
        transaction(z);
    }
  }
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |