#include <bits/stdc++.h>
using namespace std;
using ll = long long int;
using iPair = pair<int,int>;
using lPair = pair<ll, ll>;
using ivector = vector<int>;
using lvector = vector<ll>;
using istack = stack<int>;
using iqueue = queue<int>;
using ivv = vector<vector<int>>;
using lvv = vector<vector<ll>>;
const int INF = 0x3f3f3f3f;
const ll LINF = 0x3f3f3f3f3f3f3f3f;
vector<iPair> dir = {{1,0}, {-1,0}, {0,1}, {0,-1}};
#define dump(x) cout << #x << " = " << (x) << endl
#define ALL(x) begin(x),end(x)
#define rep(i,s,e) for(ll i=(s), i_stop=(e); i<i_stop; ++i)
#define repRev(i,s,e) for(ll i=(e)-1, i_stop=(s); i>=i_stop; --i)
#define range(i,s,n) for(ll i=(s), i_stop=(s)+(n); i<i_stop; ++i)
#define rangeRev(i,s,n) for(ll i=(s), i_stop=(s)-(n); i>i_stop; --i)
#define foreach(x,container) for(auto &&x:container)
template<typename T> bool chmax(T& a, const T b) {if(a<b) {a=b;return true;} return false;}
template<typename T> bool chmin(T& a, const T b) {if(a>b) {a=b;return true;} return false;}
template<typename T> void printArr(vector<T> &arr){
    for(auto &x:arr) {cout << x << " ";} cout << endl;
}

// =====================================================>

/*

*/



void solve() {
    ll n,q; cin>>n>>q;
    lvector a(n+1);
    range(i, 1, n) cin>>a[i];
    sort(ALL(a));
    // printArr(a);

    lvector s(n); s[0] = a[1] - 1;
    for(ll i = 1; i < n; ++i) {
        // [ a[i]+1, a[i+1] )
        s[i] = s[i-1] + a[i+1] - a[i] - 1;
    }

    
    // printArr(s);

    while(q--) {
        ll k; cin>>k;
        if(k > s[n-1]) {
            cout << a[n] + (k-s[n-1]) << endl;
        } else {
            int idx = lower_bound(ALL(s), k) - s.begin();
            if(idx == 0) {
                cout << k << endl;
            } else {
                // 在 [a[i]+1, a[i+1]) 之間
                cout << a[idx] + (k - s[idx-1]) << endl;
            }
        }
    }
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    solve();
    return 0;
}
#include<bits/stdc++.h>
using namespace std;

// modpow
template<class T> T modpow(T b,T p,T m){
  T rt = 1; b %= m;
  while(p>0){
    if(p&1) rt = (rt*b)%m;
    b = (b*b)%m; p>>=1;
  }
  return rt;
}

// small mod combination
// # f,g を次のようにする
// - f[i] : i が何回 MOD で割れるか. これを f_pre とする
// - g[i] : i の MOD で割れない部分の MOD での余り. これを g_pre とする
// # その後, f,g を次のようにする
// - f[i] : i! が何回 MOD で割れるか
//   * f[i] = f_pre[1]+...+f_pre[i] 累積和
// - g[i] : i! が MOD で割れない部分の MOD での余り
//   * g[i] = g_pre[1]*...*g_pre[i] 累積積(mod)
const int64_t MOD = 3;
const int64_t fMAX = 400007;
int64_t f[fMAX+1],g[fMAX+1],g_inv[fMAX+1];

void init(){
  for(int64_t i=1,tmp;i<=fMAX;i++){
    tmp = i;
    while(tmp%3==0){
      tmp /= 3; f[i]++;
    }
    g[i] = tmp%3;
  }
  g[0]=1;
  for(int64_t i=1;i<=fMAX;i++)
    f[i] += f[i-1];
  for(int64_t i=1;i<=fMAX;i++)
    g[i] = g[i]*g[i-1]%MOD;
  for(int64_t i=0;i<=fMAX;i++)
    g_inv[i] = modpow(g[i],MOD-2,MOD);
  return;
}

int64_t modcomb_s(int64_t n,int64_t r,int64_t m){
  if(f[n]-f[r]-f[n-r]>0) return 0;
  return g[n]*g_inv[r]*g_inv[n-r]%m;
}

int main(){
  std::cin.tie(nullptr);
  std::cout.tie(nullptr);
  ios::sync_with_stdio(false);

  int64_t n; cin >> n;
  string s; cin >> s;

  init();
  vector<int64_t> a(n);
  for(int64_t i=0;i<n;i++){
    if(s[i]=='B') a[i] = 0;
    else if(s[i]=='R') a[i] = 1;
    else if(s[i]=='W') a[i] = 2;
  }
  int64_t ans=0;
  for(int64_t i=0;i<n;i++){
    ans += a[i] * modcomb_s(n-1,i,MOD);
    ans %= MOD;
  }

  ans = ans * modpow((int64_t)2,n-1,MOD) % MOD;

  string ans_s;
  if(ans==0) ans_s='B';
  else if(ans==1) ans_s='R';
  else if(ans==2) ans_s='W';

  cout << ans_s << "\n";

  return 0;
}
