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

using namespace std;

const int MAX = 10000;
int data[MAX],n;


void solve(){
  vector<int> V;
  fill(data,data+MAX,0);
  for(int i = 1; i < n; i++){
    sort(V.begin(),V.end());
    if(!(binary_search(V.begin(),V.end(),(i*i)%n)))
      V.push_back((i*i)%n);
  }

  for(int i = 0; i < V.size(); i++)
    for(int j = 0; j < V.size(); j++)
      if(i!=j) {
	int num = V[i]-V[j];
	if(num < 0) num += n;
	if(num > (n-1)/2) num = n-num;
	data[num]++;
      }
}

void print(){
  for(int i = 1; i <= (n-1)/2; i++)
    cout << data[i] << endl;
}


int main(){
  while(cin >> n && n){
    solve();
    print();
  }
  return 0;
}