#include <bits/stdc++.h>
using namespace std;
const int kN = 8e5 + 100;
const int kM = 2e5 + 10;
const int kMod = 924844033;

int fpow(int a, int n) {
	int res = 1;
	while(n) {
		if(n & 1) res = 1LL * res * a % kMod;
		n >>= 1, a = 1LL * a * a % kMod;
	}
	return res;
}
int Inv(int x) {return fpow(x, kMod - 2);}
struct NTT {
  int n, invn, rev[kN];
  int g;
  int omega[kN], iomega[kN];
  void init(int n, int g) {
    this->n = n, this->g = g;
    invn = Inv(n);
    int k = log2(n);
    int x = fpow(g, (kMod - 1) / n);
    omega[0] = 1;
    for (int i = 1; i < n; i++)
      omega[i] = 1LL * omega[i - 1] * x % kMod;
    iomega[n - 1] = Inv(omega[n - 1]);
    for (int i = n - 2; i >= 0; i--)
      iomega[i] = 1LL * iomega[i + 1] * x % kMod;

    for (int i = 0; i < n; i++) {
      int t = 0;
      for (int j = 0; j < k; j++)
        if (i & (1 << j)) t |= (1 << (k - j - 1));
      rev[i] = t;
    }
  }
  void transform(vector<int> &a, int *omega) {
    for (int i = 0; i < n; i++)
      if (i < rev[i]) swap(a[i], a[rev[i]]);

    for (int len = 2; len <= n; len <<= 1) {
      int mid = len >> 1;
      int r = n / len;
      for (int j = 0; j < n; j += len) {
        for (int i = 0; i < mid; i++) {
          int t = 1LL * omega[r * i] *
            a[j + mid + i] % kMod;
          a[j + mid + i] = a[j + i] - t;
          if (a[j + mid + i] < 0)
            a[j + mid + i] += kMod;
          a[j + i] += t;
          if (a[j + i] >= kMod) a[j + i] -= kMod;
        }
      }
    }
  }
  void dft(vector<int> &a) { transform(a, omega); }
  void idft(vector<int> &a) {
    transform(a, iomega);
    for (int i = 0; i < n; i++)
      a[i] = 1LL * a[i] * invn % kMod;
  }
} solver;
vector<int> mul(vector<int> a, vector<int> b) {
  int n = 1;
  int n1 = int(a.size()), n2 = int(b.size());
  while (n < n1 + n2 - 1) n <<= 1;
  a.resize(n), b.resize(n);
  solver.init(
    n, 5);  // 3 is primitive root for 998244353
  solver.dft(a), solver.dft(b);
  for (int i = 0; i < n; i++)
    a[i] = 1LL * a[i] * b[i] % kMod;
  solver.idft(a);
  while (!a.empty() && a.back() == 0) a.pop_back();
  return a;
}

int n;
vector<int> g[kN];
int sz[kN], cnt[kN];
void dfs(int u, int fa = 0) {
	sz[u] = 1;
	for(int v : g[u])
		if(v != fa) dfs(v, u), sz[u] += sz[v];
}
int fac[kN], invf[kN];
void pre() {
	fac[0] = 1;
	for(int i = 1; i <= kM + 10; i++) fac[i] = 1LL * fac[i - 1] * i % kMod;
	invf[kM + 10] = Inv(fac[kM + 10]);
	for(int i = kM + 10 - 1; i >= 0; i--) invf[i] = 1LL * invf[i + 1] * (i + 1) % kMod;
}
int C(int n, int m) {
	if(n < m) return 0;
	return 1LL * fac[n] * invf[n - m] % kMod * invf[m] % kMod;
}

int ans[kN];
int main() {
	//for(int x = 2; ; x++) {
	//	if(fpow(x, (kMod - 1) / 2) != 1 && fpow(x, (kMod - 1) / 3) != 1 && fpow(x, (kMod - 1) / 7) != 1) {
	//		printf("%d\n", x);
	//		break;
	//	}
	//}
	scanf("%d", &n);
	pre(); 
	for(int i = 1, x, y; i < n; i++) {
		scanf("%d%d", &x, &y);
		g[x].push_back(y), g[y].push_back(x);
	}
	dfs(1);
	for(int i = 2; i <= n; i++) cnt[sz[i]]++, cnt[n - sz[i]]++;

	vector<int> a(n + 1), b(n + 1);
	for(int i = 0; i <= n; i++) a[i] = 1LL * cnt[i] * fac[i] % kMod;
	for(int i = 0; i <= n; i++) b[i] = invf[n - i];
	vector<int> res = mul(a, b); // ans_k = [x^{k + n}]res
	while(res.size() <= n + n + 1) res.push_back(0);

	for(int i = 0; i <= n; i++) ans[i] = 1LL * res[i + n] * invf[i] % kMod;
	for(int i = 1; i <= n; i++) {
		ans[i] = 1LL * n * C(n, i) % kMod - ans[i];
		if(ans[i] < 0) ans[i] += kMod;
		printf("%d\n", ans[i]);
	}
	return 0;
}


Measured memory_bytes: 60260