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

using namespace std;

int func(int s, int m, int n)
{
	if(0 < s && s <= m){
		return s;
	}
	if(0 > s){
		return func(s+n, m, n);
	}
	return func(n-s, m, n);;
}

int main()
{
	int n, m, a[10001];
	
	while(cin>>n&&n){
		set<int> st;
		vector<int> vec;
		fill(a, a+10001, 0);
		
		for(int i = 1; i < n; i++){
			st.insert((i*i)%n);
		}
		set<int>::iterator it = st.begin();
		while(it != st.end()){
			vec.push_back(*it);
			it++;
		}
		
		m = (n-1)/2;
		for(int i = 0; i < vec.size(); i++){
			for(int j = i+1; j < vec.size(); j++){
				a[func(vec[i]-vec[j], m, n)]++;
				a[func(vec[j]-vec[i], m, n)]++;
			}
		}
		
		for(int i = 1; i <= m; i++){
			cout << a[i] << endl;
		}
	}
	
	return 0;
}