/**
*    author:  Taichicchi
*    created: 17.04.2021 11:31:39
**/

#include <bits/stdc++.h>

#include <algorithm>
#include <iostream>
#include <vector>

using namespace std;

#define rep(i, n) for (int i = 0; i < (int)(n); i++)
typedef long long ll;

int main() {
    long double R, X, Y;
    cin >> R >> X >> Y;
    long double D;
    D = sqrtl(pow(X, 2) + pow(Y, 2));
    if (R == D) {
        cout << 1 << endl;
        return 0;
    }
    if (R > D) {
        cout << 2 << endl;
        return 0;
    }

    cout << ceill(D / R) << endl;

    return 0;
}
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <utility>
#include <string>
#include <fstream>
#include <map>
#include <set>
#include <queue>
#include <memory.h>

using namespace std;

typedef vector<int> VI;
typedef pair<long long, long long> PI;
typedef vector<PI> VPI;

#define FOR(i,a,n) for (int i = (a); i < (n); ++i)
#define FORE(i,a,n) for (int i = (a); i <= (n); ++i)
#define FORD(i,a,b) for (int i = (a); i >= (b); --i)
#define REP(i,n) FOR(i,0,n)
#define REPE(i,n) FORE(i,0,n)
#define LL long long
#define FIR(n) REP(i,n)
#define FJR(n) REP(j,n)
#define ALL(v) v.begin(), v.end()

#define FI FIR(n)
#define FJ FJR(n)
#define FR(i,a) FOR(i,a,n)
#define REPN(i) REP(i,n)

#define GI(n) scanf("%d", &n)
#define GI2(n,m) scanf("%d %d", &n, &m)

typedef pair<double, double> PDD;

int main() {
#ifdef LOCALF
	freopen("input.txt", "rt", stdin);
#endif
	ios::sync_with_stdio(false); cin.tie(0);	
	
	int n, M, K; cin >> n >> M >> K;
	vector<PDD> f(n + 1 + M);
	vector<int> reachable(n + 1 + M, 1);

	double s = 0, t = 0;
	vector<int> ok(n + 1 + M, 1);
	int q = 0;
	REP(k, K) {
		cin >> q;
		ok[q] = 0;
	}

	FORD(i, n - 1, 0) {
		int last = i + M;
		reachable[i] = false;
		if (ok[i]) FJR(M) if (reachable[i + 1 + j]) {
			reachable[i] = true;
			break;
		}

		bool isb = false;
		
		if (!ok[i]) {
			f[i] = { 0, 1 };
		}
		else {
			f[i] = { 1 + s / M, t / M };
		}

		s -= f[last].first;
		t -= f[last].second;
		s += f[i].first;
		t += f[i].second;
	}

	if (!reachable[0]) {
		cout << "-1" << endl;
		return 0;
	}

	double res = f[0].first / (1 - f[0].second);
	cout.precision(10);
	cout << res << endl;

}
