#include <bits/stdc++.h>
using namespace std;
long long mod = 1000000007;
const int INF = 1e9;
const long long LINF = 1e18;
long long mod_sum() { return 0LL; }
template <typename T, typename... Args>
T mod_sum(T a, Args... args) {
  return ((a + mod_sum(args...)) % mod + mod) % mod;
}
long long mod_prod() { return 1LL; }
template <typename T, typename... Args>
T mod_prod(T a, Args... args) {
  return (a * mod_prod(args...)) % mod;
}
struct ast {
  long long u, v, len;
};
vector<ast> ans;
long long solve() {
  long long n;
  cin >> n;
  priority_queue<pair<long long, long long>,
                 vector<pair<long long, long long> >,
                 greater<pair<long long, long long> > >
      pq0;
  priority_queue<pair<long long, long long>,
                 vector<pair<long long, long long> >,
                 greater<pair<long long, long long> > >
      pq1;
  for (long long i = 0; i < n; i++) {
    long long which, s;
    cin >> which >> s;
    if (which == 0)
      pq0.push({s, i});
    else
      pq1.push({s, i});
  }
  long long atlast0 = pq0.top().second, atlast1 = pq1.top().second;
  while (!pq0.empty() && !pq1.empty()) {
    if (pq0.top().first < pq1.top().first) {
      long long v = pq0.top().second;
      long long u = pq1.top().second;
      long long len = pq0.top().first;
      ans.push_back({u, v, len});
      long long temp = pq1.top().first - len;
      pq0.pop(), pq1.pop();
      pq1.push({temp, u});
    } else {
      long long v = pq1.top().second;
      long long u = pq0.top().second;
      long long len = pq1.top().first;
      ans.push_back({u, v, len});
      long long temp = pq0.top().first - len;
      pq0.pop(), pq1.pop();
      pq0.push({temp, u});
    }
  }
  if ((long long)ans.size() < n - 1 && !pq0.empty()) {
    pq0.pop();
    while (!pq0.empty())
      ans.push_back({atlast1, pq0.top().second, 0}), pq0.pop();
  } else if ((long long)ans.size() < n - 1 && !pq1.empty()) {
    pq1.pop();
    while (!pq1.empty())
      ans.push_back({atlast0, pq1.top().second, 0}), pq1.pop();
  }
  for (auto xxx : ans)
    cout << xxx.u + 1 << " " << xxx.v + 1 << " " << xxx.len << '\n';
  return 0;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long t = 1;
  while (t--) solve();
  return 0;
}
