#include <bits/stdc++.h>
using namespace std;
map<long long, long long> rec;
int q;
void Func_1(long long u, long long v, long long w) {
  while (u != v) {
    if (u > v) {
      rec[u] += w;
      u >>= 1;
    } else {
      rec[v] += w;
      v >>= 1;
    }
  }
}
long long Func_2(long long u, long long v) {
  long long ans = 0;
  while (u != v) {
    if (u > v) {
      ans += rec[u];
      u >>= 1;
    } else {
      ans += rec[v];
      v >>= 1;
    }
  }
  return ans;
}
int main() {
  scanf("%d", &q);
  while (q--) {
    int opra;
    scanf("%d", &opra);
    if (opra == 1) {
      long long u, v, w;
      scanf("%lld %lld %lld", &u, &v, &w);
      Func_1(u, v, w);
    } else {
      long long u, v;
      scanf("%lld %lld", &u, &v);
      printf("%lld\n", Func_2(u, v));
    }
  }
  return 0;
}
