7 7 7
1
2
3
4
5
6
7
 4 2 8
1
3
4
2
3
4
1
2
 9 4 9
1
2
3
4
5
6
7
8
9
 7 5 7
1
2
3
4
5
6
7
 15 10 15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 4 0 4
1
2
3
4
 12 2 12
1
2
3
4
5
6
7
8
9
10
11
12
 10 2 10
1
2
3
4
5
6
7
8
9
10
 7 4 7
1
2
3
4
5
6
7
 7 3 7
1
2
3
4
5
6
7

XXXXXXX
 ..XX.X.X
 ...X.X.XX
 .X.XXXX
 .X.X.X.X.XXXXXX
 ....
 .........X.X
 .......X.X
 .X.X.XX
 ...X.XX

#include <bits/stdc++.h>
using namespace std;
const unsigned int INF = 2000000001;
const long long INF0 = 2000000001000000001;
const bool DEBUG_OUTPUT = false;
const int modulo = 1000000007;
const int go[8][2] = {{0, 1}, {0, -1},  {1, 0},  {-1, 0},
                      {1, 1}, {-1, -1}, {1, -1}, {-1, 1}};
bool used[105];
bool fc[105];
bool matr[105][105];
int n;
bool cycle(int s, int i, int p) {
  if (used[i]) return false;
  used[i] = true;
  for (int j = 0; j < n; j++)
    if (matr[i][j] && j == s && p != s) {
      fc[i] = true;
      return true;
    } else if (matr[i][j] && !used[j] && cycle(s, j, i)) {
      fc[i] = true;
      return true;
    }
  return false;
}
void dfs(int i) {
  if (used[i]) return;
  used[i] = true;
  for (int j = 0; j < n; j++)
    if (matr[i][j]) dfs(j);
}
int x, y;
void notused() {
  for (int i = 0; i < n; i++) used[i] = false;
}
int main() {
  long long n, k;
  int p;
  cin >> n >> k >> p;
  if (k == 2 && (n & 1) == 1) {
    for (int i = 0; i < p; i++) {
      long long q;
      cin >> q;
      q = n - q;
      cout << ((q < k) ? 'X' : '.');
    }
    return 0;
  }
  long long a = n >> 1;
  long long b = 0;
  if (k >= a) {
    b = k - a;
  } else
    a = k;
  for (int i = 0; i < p; i++) {
    long long q;
    cin >> q;
    q = n - q;
    if (q & 1) {
      cout << ((q >> 1) < b ? 'X' : '.');
    } else
      cout << ((q >> 1) < a ? 'X' : '.');
  }
}
