#include <bits/stdc++.h>   using namespace std;   bool good(long long int a, long long int b) {     while (a and b) {       if (a % 2 == 0 and b % 2 == 1) return false;       a /= 2;       b /= 2;     }     return true;   }   int main() {     ios::sync_with_stdio(false);     cin.tie(NULL);     int n;     cin >> n;     vector<pair<long long int, long long int>> s(n);     for (int i = 0; i < n; i++) cin >> s[i].first;     for (int i = 0; i < n; i++) cin >> s[i].second;     sort(s.rbegin(), s.rend());     vector<bool> used(n, false);     int nb = 0;     long long int knw = 0;     long long int ans = 0;     for (int i = 1; i < n; i++) {       if (s[i].first == s[i - 1].first) {         knw |= s[i].first;         if (!used[i]) {           nb++;           ans += s[i].second;           used[i] = true;         }         if (!used[i - 1]) {           nb++;           ans += s[i - 1].second;           used[i - 1] = true;         }       }     }     for (int i = 0; i < n; i++) {       if (used[i]) continue;       for (int j = 0; j < n; j++) {         if (used[j] and (s[i].first | s[j].first) == s[j].first) {           ans += s[i].second;           nb++;           used[i] = true;           break;         }       }     }     if (nb < 2) ans = 0;     cout << ans << endl;     return 0;   }   