Может ты скажешь ей, что ты не Леонтий?
Недавно вошедшие в список форбс 24 до 24-ех Леонид и Семен решили открыть новый бизнес. Для этого они нашли знаменитую предпринимательницу Лизу, которая стала спонсором их стартапа. Для успешного трейдинга ребята создали один основной аккаунт и один дополнительный.

Для хорошей отчестности перед инвестором все рискованные сделки они проводят со второго аккаунта. Как только второй аккаунт выходит в положительный баланс, то ребята сливают все акции на основной аккаунт, а второй портфель очищается.

Вы 
−
− первый разработчик в их стартапе, перед Вами стоит сложная задача реализации придуманной Семой и Лёвой системы.

С аккаунтами могут происходить следующие операции:

buy 
�
�
�
�
�
�
�
account 
�
�
id 
−
− купить акции с номером 
�
�
id в портфель 
�
�
�
�
�
�
�
account (может быть для обоих аккаунтов)

sell 
�
�
�
�
�
�
�
account 
�
�
id 
−
− продать акции с номером 
�
�
id в портфели 
�
�
�
�
�
�
�
account (может быть для обоих аккаунтов)

merge 
−
− сливать все акции в основной портфель

После каждого объединения товарищи проводят показ результатов Лизе, поэтому при этой операции требуется выводить 
�
�
id акций в отсортированном виде.

Входные данные

В первой строке подается 
�
n 
−
− число операций 
1
≤
�
≤
1
0
7
1≤n≤10 
7
 

В следующих n строках подаются команды одного из 3 видов (buy, sell, merge) Гарантируется, что номер акции: 
0
≤
�
�
≤
1
0
9
0≤id≤10 
9
 

Выходные данные

При каждой операции merge вывести 
�
�
id акции в отсортированном виде

STDIN	STDOUT
1
buy 1 1


2
buy 1 2
merge

2


#include <iostream>
#include <vector>

struct Node {
  int data;
  Node* left;
  Node* right;

  Node(int value) : data(value), left(nullptr), right(nullptr) {}
};

struct BST {
  Node* top = nullptr;

  Node* insert(Node* root, int value) {
    if (root == nullptr) {
        return new Node(value);
    }
    if (value < root->data) {
      root->left = insert(root->left, value);
    } else if (value > root->data) {
      root->right = insert(root->right, value);
    }
    return root;
  }

  Node* findMin(Node* root) {
    while (root && root->left != nullptr) {
      root = root->left;
    }
    return root;
  }

  Node* pop(Node* root, int value) {
    if (root == nullptr) return nullptr;

    if (value < root->data) {
      root->left = pop(root->left, value);
    } else if (value > root->data) {
      root->right = pop(root->right, value);
    } else {
      if (root->left == nullptr) {
        Node* temp = root->right;
        delete root;
        return temp;
      } else if (root->right == nullptr) {
        Node* temp = root->left;
        delete root;
        return temp;
      }
      Node* temp = findMin(root->right);
      root->data = temp->data;
      root->right = pop(root->right, temp->data);
    }
    return root;
  }

  void inorder(Node* root) {
    if (root == nullptr) return;
    
    inorder(root->left);
    std::cout << root->data << " ";
    inorder(root->right);
  }

  void clear(Node* root) {
  if (root == nullptr) return;

  clear(root->left);
  clear(root->right);
  
  root->left = nullptr;
  root->right = nullptr;
  
  delete root;
  }

  void collect_vals(Node* root, std::vector<int>& elements) {
  if (!root) return;
  collect_vals(root->left, elements);
  elements.push_back(root->data);
  collect_vals(root->right, elements);
  }

  void merge(BST& other) {
    std::vector<int> elements;
    collect_vals(other.top, elements);
    
    for (int value : elements) {
      top = insert(top, value);
    }
    
    other.clear(other.top);
    other.top = nullptr;
  }
};


int main() {
  int n;
  std::cin >> n;
  std::string cmd;
  int acc;
  int id;
  BST arr[2];

  for (int i = 0; i < n; ++i) {
    std::cin >> cmd;
    if (cmd == "merge") {
      arr[0].merge(arr[1]);
      if (arr[0].top != nullptr) {
          arr[0].inorder(arr[0].top);
          std::cout << '\n';
      }
    } else {
      std::cin >> acc >> id;
      if (cmd == "buy") {
        arr[acc - 1].top = arr[acc - 1].insert(arr[acc - 1].top, id);
      } else if (cmd == "sell") {
        arr[acc - 1].top = arr[acc - 1].pop(arr[acc - 1].top, id);
      }
    }
  }
  return 0;
}


вот в чем мой код неверный? почему не проходит первый тест? все функции верны, может в выводе проблема?