#include <bits/stdc++.h>
long long max(long long a, long long b) { return a > b ? a : b; }
long long a[1002], b[1002], n, i, j, d1[1000][1000], d2[1000][1000];
int main() {
  scanf("%lld", &n);
  for (i = 0; i < n; i++) scanf("%lld", &a[i]);
  for (i = 0; i < n; i++) scanf("%lld", &b[i]);
  for (i = 0; i < n; i++) {
    long long xo = a[i];
    d1[i][i] = xo;
    for (j = i + 1; j < n; j++) {
      xo = xo | a[j];
      d1[i][j] = xo;
    }
  }
  for (i = 0; i < n; i++) {
    long long xo = b[i];
    d2[i][i] = b[i];
    for (j = i + 1; j < n; j++) {
      xo = xo | b[j];
      d2[i][j] = xo;
    }
    long long mx = 0;
    for (i = 0; i < n; i++) {
      for (j = 0; j < n; j++) {
        mx = max(mx, d1[i][j] + d2[i][j]);
      }
    }
    printf("%lld\n", mx);
  }
  return 0;
}
