using
System;
using
System.Collections.Generic;
class
GFG
{
static
void
solve(
char
[] s)
{
int
n = s.Length;
int
[,]dp =
new
int
[n, n];
for
(
int
len = n - 1; len >= 0; --len)
{
for
(
int
i = 0; i + len < n; ++i)
{
int
j = i + len;
if
(i == 0 && j == n - 1)
{
if
(s[i] == s[j])
dp[i, j] = 2;
else
if
(s[i] != s[j])
dp[i, j] = 1;
}
else
{
if
(s[i] == s[j])
{
if
(i - 1 >= 0)
{
dp[i, j] += dp[i - 1, j];
}
if
(j + 1 <= n - 1)
{
dp[i, j] += dp[i, j + 1];
}
if
(i - 1 < 0 || j + 1 >= n)
{
dp[i, j] += 1;
}
}
else
if
(s[i] != s[j])
{
if
(i - 1 >= 0)
{
dp[i, j] += dp[i - 1, j];
}
if
(j + 1 <= n - 1)
{
dp[i, j] += dp[i, j + 1];
}
if
(i - 1 >= 0 && j + 1 <= n - 1)
{
dp[i, j] -= dp[i - 1, j + 1];
}
}
}
}
}
List<
int
> ways =
new
List<
int
>();
for
(
int
i = 0; i < n; ++i)
{
if
(i == 0 || i == n - 1)
{
ways.Add(1);
}
else
{
int
total = dp[i - 1,i + 1];
ways.Add(total);
}
}
for
(
int
i = 0; i < ways.Capacity; ++i)
{
Console.Write(ways[i] +
" "
);
}
}
public
static
void
Main()
{
char
[] s =
"xyxyx"
.ToCharArray();
solve(s);
}
}