#include <bits/stdc++.h>
#define fir first
#define sec second
#define PB push_back
#define MP make_pair
#define all(a) (a).begin(), (a).end()
#define sz(a) (a).size()

using namespace std;

#define rep(i, n) for (int i = 0; i < (int)(n); ++i)
#define rep1(i, n) for (int i = 1; i < (int)(n); ++i)
#define foreach(itr, c) for (__typeof((c).begin()) itr = (c).begin(); itr != (c).end(); ++itr)

template <class T> void chkmax(T& x, T y) { x = (x > y ? x : y); }
template <class T> void chkmin(T& x, T y) { x = (x < y ? x : y); }

typedef long long LL;
typedef pair <int, int> pii;
typedef vector <int> vi;

const int N = 1e5 + 5;

int n, x, a[N];

int main(){
    scanf("%d%d", &n, &x);
    rep1(i, n + 1){
        scanf("%d", &a[i]);
        if (a[i] != x) printf("%d ", a[i]);
    }
    printf("\n");
    return 0;
}
#include <bits/stdc++.h>

using namespace std;

typedef long double ld;

const int N = (int) 2e5 + 7;
int n;
int m;
int k;
int x[N];
bool is[N];
ld dp[N];

ld algo(ld dp0) {
  ld sum = 0;
  for (int i = n - 1; i >= 0; i--) {
    if (is[i]) {
      dp[i] = dp0;
    } else {
      dp[i] = 1 + sum / (ld) m;
    }
    sum += dp[i];
    sum -= dp[i + m];
  }
  return dp[0];
 /// cout << dp0 << " " << dp[0] << "\n";
}

bool ok(ld dp0) {
  return dp0 - algo(dp0) < 1e-14;
}

const ld INF = (ld) 1e12;

signed main() {
  ios::sync_with_stdio(0); cin.tie(0);

 /// freopen ("input", "r", stdin);

  cin >> n >> m >> k;
  for (int i = 1; i <= k; i++) {
    int x;
    cin >> x;
    is[x] = 1;
  }
  ld l = 0, r = INF;
  if (ok(r)) {
    cout << "-1\n";
    return 0;
  }
  for (int i = 1; i <= 100; i++) {
    ld m = (l + r) * 0.5;
    if (ok(m)) {
      l = m;
    } else {
      r = m;
    }
  }
  cout << fixed << setprecision(3) << l << "\n";
  return 0;
  ld x = 0;
  while (1) {
    algo(x);
    ld y = dp[0];
    if (fabs(x - y) < 1e-14) {
      break;
    }
    x = y;
  }
  cout << fixed << setprecision(6) << x << "\n";
}
