#include <bits/stdc++.h>
using namespace std;
map<pair<long long, long long>, long long> m;
void add() {
  long long v, u, w;
  cin >> v >> u >> w;
  while (v != u) {
    if (v < u) swap(v, u);
    m[{v / 2, v}] += w;
    v /= 2;
  }
}
long long r() {
  long long v, u;
  cin >> v >> u;
  long long sum = 0;
  while (v != u) {
    if (v < u) swap(v, u);
    if (m.find({v / 2, v}) != m.end()) {
      sum += m[{v / 2, v}];
    }
    v /= 2;
  }
  return sum;
}
int main() {
  long long q;
  cin >> q;
  for (long long i = 0; i < q; ++i) {
    long long tr;
    cin >> tr;
    if (tr == 1) {
      add();
    } else {
      cout << r() << endl;
    }
  }
}
