#include <bits/stdc++.h>
using namespace std;
map<pair<long long, long long>, long long> q;
long long lca(long long a, long long b) {
  while (a != b) {
    if (a > b) swap(a, b);
    b >>= 1;
  }
  return a;
}
void update(long long a, long long b, long long c) {
  while (a != b) {
    q[make_pair(a >> 1, a)] += c;
    a >>= 1;
  }
}
long long query(long long a, long long b) {
  long long sum = 0;
  while (a != b) {
    sum += q[make_pair(a >> 1, a)];
    a >>= 1;
  }
  return sum;
}
int main() {
  int q, t;
  long long u, v, w;
  cin >> q;
  while (q--) {
    cin >> t >> u >> v;
    long long l = lca(u, v);
    if (t == 1) {
      cin >> w;
      update(u, l, w);
      update(v, l, w);
    } else
      cout << query(u, l) + query(v, l) << endl;
  }
  return 0;
}
