#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
void task5() {
int n;
cin >> n;
vector<int> nums(n);
for(int i = 0; i < n; i++) cin >> nums[i];
vector<int> trainsNeeded(n, 0);
vector<int> longInt;
vector<int> startDay;
int sq = sqrt(n) + 1;
for(int i = 0; i < n; i++){
if(nums[i] >= sq){
longInt.push_back(nums[i]);
startDay.push_back(i);
}
}
vector<vector<int>> count(sq);
for(int i = 0; i < n; i++){
if(nums[i] < sq){
count[nums[i]].push_back(i);
}
}
for(int interval = 1; interval < sq; interval++){
for(int start : count[interval]){
for(int day = start; day < n; day += interval){
trainsNeeded[day]++;
}
}
}
for(size_t i = 0; i < longInt.size(); i++){
for(int j = startDay[i]; j < n; j += longInt[i]){
trainsNeeded[j]++;
}
}
for(int i = 0; i < n; i++){
cout << trainsNeeded[i] << " ";
}
cout << endl;
}
void task4(){
int n;
cin >> n;
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
for(int k = 0; k < n; k++){
if((k + j + i) % 3 == 0)
cout << "R" << " ";
else if((k+j +i) % 3 == 1)
cout << "G" << " ";
else
cout << "B" << " ";
}
cout << endl;
}
}
}
int main() {
task5();
return 0;
}