#include <bits/stdc++.h>
using namespace std;
const int maxn = 7e3 + 100;
inline long long read() {
  long long x = 0, f = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (isdigit(ch)) {
    x = x * 10 + ch - 48;
    ch = getchar();
  }
  return x * f;
}
long long a[maxn], b[maxn];
map<long long, long long> map1;
bool vis[maxn];
int main(void) {
  cin.tie(0);
  std::ios::sync_with_stdio(false);
  long long n;
  cin >> n;
  for (long long i = 1; i <= n; i++) cin >> a[i];
  for (long long i = 1; i <= n; i++) cin >> b[i];
  for (long long i = 1; i <= n; i++) {
    for (long long j = i + 1; j <= n; j++) {
      if (a[i] == a[j]) {
        map1[a[i]]++;
      }
    }
  }
  long long ans = 0;
  for (auto i : map1) {
    if (i.second >= 1) {
      long long temp = i.first;
      for (long long j = 1; j <= n; j++) {
        if (!vis[j] && (temp | a[j]) == temp) {
          ans += b[j];
          vis[j] = 1;
        }
      }
    }
  }
  cout << ans << "\n";
  return 0;
}
