#include <iostream>
#include <vector>
using namespace std;
const int N = 2e5+5, MOD = 998244353;
int n;
vector<int> a[N];
int b[N];
long long f[N];
int dfs(int x,int par) {
int total = 1;
for(int ch:a[x]) if(ch != par) total += dfs(ch,x);
b[x] = total;
return b[x];
}
void pre() {
f[0] = 1;
for(int i=1;i<N;i++) {
f[i] = (f[i-1]*i) % MOD;
}
}
int go(int x,int par,int bubble) {
int children = 0;
for(int ch : a[x]) if(ch != par) children++;
long long ans = f[children];
for(int ch : a[x]) if(ch != par) {
ans = (ans * go(ch,x,b[ch])) % MOD;
}
ans = (ans * bubble) % MOD;
return (ans % MOD);
}
int main() {
cin >> n;
for(int i=1;i<n;i++) {
int x,y; cin >> x >> y;
a[x].push_back(y);
a[y].push_back(x);
}
dfs(1,-1);
pre();
int ans = go(1,-1,n) % MOD;
cout << ans;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE4gPSAyZTUrNSwgTU9EID0gOTk4MjQ0MzUzOwoKaW50IG47CnZlY3RvcjxpbnQ+IGFbTl07CmludCBiW05dOwpsb25nIGxvbmcgZltOXTsKCmludCBkZnMoaW50IHgsaW50IHBhcikgewoJaW50IHRvdGFsID0gMTsKCWZvcihpbnQgY2g6YVt4XSkgaWYoY2ggIT0gcGFyKSB0b3RhbCArPSBkZnMoY2gseCk7CgliW3hdID0gdG90YWw7CglyZXR1cm4gYlt4XTsKfQoKdm9pZCBwcmUoKSB7CglmWzBdID0gMTsKCWZvcihpbnQgaT0xO2k8TjtpKyspIHsKCQlmW2ldID0gKGZbaS0xXSppKSAlIE1PRDsKCX0KfQoKaW50IGdvKGludCB4LGludCBwYXIsaW50IGJ1YmJsZSkgewoJaW50IGNoaWxkcmVuID0gMDsKCWZvcihpbnQgY2ggOiBhW3hdKSBpZihjaCAhPSBwYXIpIGNoaWxkcmVuKys7Cglsb25nIGxvbmcgYW5zID0gZltjaGlsZHJlbl07Cglmb3IoaW50IGNoIDogYVt4XSkgaWYoY2ggIT0gcGFyKSB7CgkJYW5zID0gKGFucyAqIGdvKGNoLHgsYltjaF0pKSAlIE1PRDsKCX0KCWFucyA9IChhbnMgKiBidWJibGUpICUgTU9EOwoJcmV0dXJuIChhbnMgJSBNT0QpOwp9CgppbnQgbWFpbigpIHsKCWNpbiA+PiBuOwoJZm9yKGludCBpPTE7aTxuO2krKykgewoJCWludCB4LHk7IGNpbiA+PiB4ID4+IHk7CgkJYVt4XS5wdXNoX2JhY2soeSk7CgkJYVt5XS5wdXNoX2JhY2soeCk7Cgl9CglkZnMoMSwtMSk7CglwcmUoKTsKCWludCBhbnMgPSBnbygxLC0xLG4pICUgTU9EOwoJY291dCA8PCBhbnM7Cn0=