#include <bits/stdc++.h>
using namespace std;
long long int sum = 0;
map<long long int, long long int> mp;
void dfs(long long int i, long long int j, long long int c) {
  if (i == j)
    return;
  else if (i > j) {
    mp[i] += c;
    i /= 2;
  } else {
    mp[j] += c;
    j /= 2;
  }
  dfs(i, j, c);
}
void dfs2(long long int i, long long int j) {
  if (i == j)
    return;
  else if (i > j) {
    sum += mp[i];
    i /= 2;
  } else {
    sum += mp[j];
    j /= 2;
  }
  dfs2(i, j);
}
int main() {
  long long int q, x, y, t, c;
  cin >> q;
  while (q--) {
    cin >> x;
    if (x == 1) {
      cin >> y >> t >> c;
      dfs(y, t, c);
    } else if (x == 2) {
      sum = 0;
      cin >> y >> t;
      dfs2(y, t);
      cout << sum << endl;
    }
  }
  return 0;
}
