#include <bits/stdc++.h>
using namespace std;
map<long long int, long long int> mmap;
long long int updateMap(long long int u, long long int v, long long int w) {
  long long int cost = 0;
  while (u != v) {
    if (u > v) {
      mmap[u] += w;
      cost += mmap[u];
      u /= 2;
    } else {
      mmap[v] += w;
      cost += mmap[v];
      v /= 2;
    }
  }
  return cost;
}
int32_t main() {
  long long int q;
  cin >> q;
  while (q--) {
    long long int qtype, u, v;
    cin >> qtype >> u >> v;
    if (qtype == 1) {
      long long int w;
      cin >> w;
      updateMap(u, v, w);
    } else {
      cout << updateMap(u, v, 0) << endl;
    }
  }
  return 0;
}
