#include using namespace std; using ll = long long; using ld = long double; using vll = vector; using pll = pair; #define rep(i,n) for(int i=0;i<(n);i++) #define rrep(i,n) for(int i=(n)-1;0<=i;i--) #define REP(i,n) for(int i=1;i<=n;i++) #define all(a) a.begin(), a.end() #define sort(a) sort(all(a)) #define rev(a) reverse(all(a)) char el = '\n'; void YN(bool f){cout<<(f?"Yes":"No")<<"\n";} template bool chmin(T& x,T y){if(x>y){x=y;return true;}return false;} template bool chmax(T& x,T y){if(x istream &operator>>(istream &is,pair &v){is>>v.first>>v.second;return is;} template istream &operator>>(istream &is,vector &v){for(T &in:v)is>>in;return is;} template ostream &operator<<(ostream &os,pair &v){os< ostream &operator<<(ostream &os,vector &v){rep(i,v.size())os< struct modint{ public: ll x; modint(ll x=0) : x((x%mod+mod)%mod) {} modint operator-() const { return modint(-x); } modint& operator+=(const modint& a){ if(mod<=(x += a.x)) x-=mod; return *this; } modint& operator-=(const modint& a){ if(mod<=(x+=mod-a.x)) x-=mod; return *this; } modint& operator*=(const modint& a){ (x*=a.x)%=mod; return *this; } modint& operator++(){ ++x; return *this; } modint operator++(int){ modint temp = *this; x++; return temp; } modint& operator--(){ --x; return *this; } modint operator--(int){ modint temp = *this; x--; return temp; } modint pow(ll t) const{ modint a=1,b=x; while(t){ if(t&1) a*=b; b*=b; t/=2; } return a; } modint inv() const { return pow(mod-2); } modint& operator/=(const modint& a){ return (*this)*=a.inv(); } friend modint operator+(const modint& a, const modint& b) { return modint(a)+=b; } friend modint operator-(const modint& a, const modint& b) { return modint(a)-=b; } friend modint operator*(const modint& a, const modint& b) { return modint(a)*=b; } friend modint operator/(const modint& a, const modint& b) { return modint(a)/=b; } friend bool operator==(const modint& a, const modint& b) { return (modint(a).x==b.x); } friend bool operator!=(const modint& a, const modint& b) { return (modint(a).x!=b.x); } friend ostream& operator<<(ostream& os, const modint& m){ os << m.x; return os; } friend istream& operator>>(istream& is, modint& m){ is >> m.x; return is; } }; using fp998=modint<998244353>; using fp107=modint<1000000007>; int main(){ int n; cin >> n; vll d(n); rep(i,n-1){ int a, b; cin >> a >> b; a--; b--; d[a]++; d[b]++; } fp998 ans = 0, t = 2; rep(i,n) ans += t.pow(d[i]); cout << ans << el; }