#include <bits/stdc++.h>
using namespace std;
map<pair<long long, long long>, long long> fee;
void update(long long u, long long v, long long w) {
  if (u > v) {
    update(v, u, w);
    return;
  }
  if (v >> 1 == u) {
    fee[make_pair(u, v)] += w;
  } else {
    fee[make_pair(v >> 1, v)] += w;
    update(u, v / 2, w);
  }
}
long long calculate(long long u, long long v, long long res) {
  if (u > v) return calculate(v, u, res);
  if (v >> 1 == u)
    return res + fee[make_pair(u, v)];
  else
    return calculate(v >> 1, u, res + fee[make_pair(v >> 1, v)]);
}
int main() {
  ios::sync_with_stdio(false);
  long long q, u, v, w, t;
  cin >> q;
  while (q--) {
    cin >> t;
    switch (t) {
      case 1:
        cin >> u >> v >> w;
        update(max(u, v), min(u, v), w);
        break;
      case 2:
        cin >> u >> v;
        cout << calculate(max(u, v), min(u, v), 0) << endl;
        break;
    }
  }
  return 0;
}
