#include <algorithm>
#include <iostream>
#include <vector>
#include <set>
#include <cstdio>
#include <math.h>
#include <string>
#include <sstream>
#include <map>
#include <unordered_map>
#include <queue>
#include <stack>
#include <cassert>
#include <iterator>
#include <cstring>
#include <fstream>
#include <cstdio>
#include<ctime>
using namespace std;
typedef long long ll;

const int maxl = 110;

int n, k, mod, lim; ll ans;
ll dp[maxl][maxl * maxl * maxl];

inline void prework()
{
	scanf("%d%d%d", &n, &k, &mod);
	lim = k * n * (n - 1) / 2;
}

inline void add(ll& x, ll y)
{
	x = (x + y) % mod;
	if (x < 0)
		x += mod;
}

inline void mainwork()
{
	dp[0][0] = 1;
	for (int i = 1; i < n; i++)
	{
		for (int j = 0; j <= lim; j++)
		{
			dp[i][j] = dp[i - 1][j];
			if (j >= i)
				add(dp[i][j], dp[i][j - i]);
		}
		for (int j = lim; j >= (k + 1) * i; j--)
			add(dp[i][j], -dp[i][j - (k + 1) * i]);
	}
}

inline void print()
{
	for (int x = 1; x <= n; x++)
	{
		ans = 0;
		for (int i = 0; i <= lim; i++)
			add(ans, dp[x - 1][i] * dp[n - x][i]);
		ans = ans * (k + 1) % mod;
		ans = (ans - 1 + mod) % mod;
		printf("%lld\n", ans);
	}
}

int main()
{
	int t = 1;
	//scanf("%d",&t);
	for (int i = 1; i <= t; i++)
	{
		prework();
		mainwork();
		print();
	}
	return 0;
}

#include <bits/stdc++.h>
// #include <atcoder/all>
// using namespace atcoder;
#define _overload3(_1,_2,_3,name,...) name
#define _rep(i,n) repi(i,0,n)
#define repi(i,a,b) for(ll i=ll(a);i<ll(b);++i)
#define rep(...) _overload3(__VA_ARGS__,repi,_rep,)(__VA_ARGS__)
#define gnr(i,a,b) for(ll i=ll(b)-1;i>=ll(a);i--)
#define per(i,b) gnr(i,0,b)
#define all(x) x.begin(),x.end() 
#define SZ(x) ((int)(x).size())
#define PB push_back
#define MP make_pair
#define V vector
#define P pair<int,int>
#define Pbb pair<bool,bool>
#define F first
#define S second
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; }
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return 1; } return 0; }
using ll = long long;
using ld = long double;
using namespace std;
const int INF =1001001001;
const int MAX = 2e6+1;
 

int main() {
    ll R,x,y;cin>>R>>x>>y;
    ll z=x*x+y*y;
    R*=R;
    if(z==R){
        cout<<1<<endl;
        return 0;
    }
    ll ans=2;
    while(1){
        if(ans*ans>=z){
            cout<<ans<<endl;
            return 0;
        }
        if(ans*ans*R>=z){
            cout<<ans<<endl;
            return 0;
        }
        ans++;
    }
}