#include <iostream>
#include <cstring>
using namespace std;
constexpr int N = 3000 + 5;
constexpr int P = 1e9 + 7;
char s[N];
int fl[N][N] = {0};
int fr[N][N] = {0};
signed main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
// freopen("input.txt", "r", stdin);
int n;
cin >> n;
cin >> s;
fl[0][0] = 1;
for (int i = 0; i < n; i++) {
for (int j = 0; j <= n; j++) {
if (s[i] == '>') {
fl[i + 1][j] = (fl[i + 1][j] + (long long) fl[i][j] * j) % P;
fl[i + 1][j + 1] = (fl[i + 1][j + 1] + (long long) fl[i][j] * (j + 1)) % P;
} else {
fl[i + 1][j] = (fl[i + 1][j] + (long long) fl[i][j] * j) % P;
if (j > 1) {
fl[i + 1][j - 1] = (fl[i + 1][j - 1] + (long long) fl[i][j] * (j - 1)) % P;
}
}
}
}
fr[n][0] = 1;
for (int i = n; i; i--) {
for (int j = 0; j <= n; j++) {
if (s[i - 1] == '<') {
fr[i - 1][j] = (fr[i - 1][j] + (long long) fr[i][j] * j) % P;
fr[i - 1][j + 1] = (fr[i - 1][j + 1] + (long long) fr[i][j] * (j + 1)) % P;
} else {
fr[i - 1][j] = (fr[i - 1][j] + (long long) fr[i][j] * j) % P;
if (j > 1) {
fr[i - 1][j - 1] = (fr[i - 1][j - 1] + (long long) fr[i][j] * (j - 1)) % P;
}
}
}
}
for (int i = 0; i < n; i++) {
int res = 0;
for (int a = 0; a <= n; a++) {
res = (res + (long long) fl[i][a] * fr[i + 1][a] * 2) % P;
if (a)
res = (res + (long long) fl[i][a] * fr[i + 1][a - 1]) % P;
if (a < n)
res = (res + (long long) fl[i][a] * fr[i + 1][a + 1]) % P;
}
cout << res << ' ';
}
return 0;
}