#include<iostream>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;

#define MAX_N 100000

long long q[MAX_N];
long long x[MAX_N];
long long n, z;
vector<long long>p;

int main() {
	while (true) {
		for (int i = 0; i < MAX_N; i++)
		{
			q[i] = 0; x[i] = 0;
		}
		cin >> n;
		p.clear();
		if (n == 0) { break; }
		for (int i = 1; i < n; i++)
		{
			q[(i*i) % n] = 1;
		}
		for (int i = 0; i < MAX_N; i++)
		{
			if (q[i] == 1)
			{
				p.push_back(i);
			}
		}
		for (int i = 0; i < p.size(); i++)
		{
			for (int j = i + 1; j < p.size(); j++)
			{
				if (i != j)
				{
					z = p[i] - p[j];
					if (z < 0) { z += n; }
					if (z > (n - 1) / 2) { z = n - z; }
					x[z]++;
				}
			}
		}
		for (int i = 1; i <= (n - 1) / 2; i++)
		{
			cout << x[i] * 2 << endl;
		}
	}
}