#include <bits/stdc++.h>
using namespace std;
map<pair<long long, long long>, long long> ma;
void put(long long u, long long v, long long w) {
  while (v != u) {
    long long par;
    if (v > u) {
      par = v / 2;
      ma[make_pair(par, v)] += w;
      ma[make_pair(v, par)] += w;
      v /= 2;
    } else {
      par = u / 2;
      ma[make_pair(par, u)] += w;
      ma[make_pair(u, par)] += w;
      u /= 2;
    }
  }
}
long long solve(long long u, long long v) {
  long long ans = 0;
  while (v != u) {
    long long par;
    if (v > u) {
      par = v / 2;
      ans += ma[make_pair(par, v)];
      v /= 2;
    } else {
      par = u / 2;
      ans += ma[make_pair(par, u)];
      u /= 2;
    }
  }
  return ans;
}
int main() {
  long long u, v, w, ans;
  int q, ty;
  cin >> q;
  while (q--) {
    cin >> ty;
    if (ty == 1) {
      cin >> u >> v >> w;
      put(u, v, w);
    } else {
      cin >> u >> v;
      cout << solve(u, v) << endl;
    }
  }
  return 0;
}
