#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2000005;
int read()
{
int f = 1, k = 0;
char c = getchar();
while (c < '0' || c > '9')
{
if (c == '-')
{
f = -1;
}
c = getchar();
}
while (c >= '0' && c <= '9')
{
k = k * 10 + c - '0';
c = getchar();
}
return f * k;
}
int n, m, k, tt, cnt, ans, pre[N][2];
string s;
signed main()
{
scanf("%d", &n);
cin >> s;
for (int i = 0; i < n; i++)
{
pre[i + 1][0] = pre[i][0];
pre[i + 1][1] = pre[i][1];
if (s[i] == '?')
{
continue;
}
pre[i + 1][s[i] & 1 ^ 1] = i + 1;
}
for (int len = 1; len <= n; len++)
{
int p = 0, ans = 0;
while (p + len <= n)
{
if (pre[p + len][0] == pre[p][0] || pre[p + len][1] == pre[p][1])
{
p += len;
ans++;
}
else
{
p = pre[p + len][pre[p + len][1] < pre[p + len][0]];
}
}
cout << ans << " ";
}
return 0;
}
1505H - L BREAK into program | 171E - MYSTERIOUS LANGUAGE |
630D - Hexagons | 1690D - Black and White Stripe |
1688D - The Enchanted Forest | 1674C - Infinite Replacement |
712A - Memory and Crow | 1676C - Most Similar Words |
1681A - Game with Cards | 151C - Win or Freeze |
1585A - Life of a Flower | 1662A - Organizing SWERC |
466C - Number of Ways | 1146A - Love "A" |
1618D - Array and Operations | 1255A - Changing Volume |
1710C - XOR Triangle | 415C - Mashmokh and Numbers |
8A - Train and Peter | 591A - Wizards' Duel |
1703G - Good Key Bad Key | 1705A - Mark the Photographer |
1707A - Doremy's IQ | 1706B - Making Towers |
1325B - CopyCopyCopyCopyCopy | 1649C - Weird Sum |
1324B - Yet Another Palindrome Problem | 525A - Vitaliy and Pie |
879A - Borya's Diagnosis | 1672B - I love AAAB |