#include <bits/stdc++.h>
using namespace std;
map<long long, long long> mp;
void add(long long a, long long w) {
  if (mp.find(a) == mp.end()) mp[a] = 0;
  mp[a] += w;
}
long long val(long long a) {
  if (mp.find(a) == mp.end()) return 0;
  return mp[a];
}
int main() {
  int t;
  cin >> t;
  while (t--) {
    int s;
    cin >> s;
    if (s == 1) {
      long long u, v, w;
      cin >> u >> v >> w;
      while (u != v) {
        if (u > v) {
          add(u, w);
          u >>= 1;
        } else {
          add(v, w);
          v >>= 1;
        }
      }
    } else {
      long long u, v, ans = 0;
      cin >> u >> v;
      while (v != u) {
        if (u > v) {
          ans += val(u);
          u >>= 1;
        } else {
          ans += val(v);
          v >>= 1;
        }
      }
      cout << ans << endl;
    }
  }
  return 0;
}
