#include<iostream>
#include<vector>
using namespace std;
typedef long long li;
#define repa(i,a,n) for(int i=(a);i<(n);i++)
#define MOD 998244353
#define rep(i,n) for(int i=0;i<(n);i++)
#define df 0
template<class T> void print(const T& t){ cout << t << "\n"; }
template<class T, class... Ts> void print(const T& t, const Ts&... ts) { cout << t; if (sizeof...(ts)) cout << " "; print(ts...); }

struct modint{
  li num;

  modint(li a=0){
    num=(a%MOD+MOD)%MOD;
  }
  modint operator+(modint a) {return{(num+a.num)%MOD};} 
  modint operator-(modint a) {return{((num-a.num)%MOD+MOD)%MOD};}
  modint operator*(modint a) {return{num*a.num%MOD};}
  modint inv(const modint& a);
  modint operator/(modint a) {return (*this)*inv(a);}
  modint& operator+=(modint a) {
    (num += a.num)%=MOD;
    return *this;
  }
  modint& operator-=(modint a) {
    (num += MOD-a.num)%=MOD;
    return *this;
  }
  modint& operator*=(modint a) {
    (num*=a.num)%=MOD;
    return *this;
  }
};

std::ostream& operator<<(std::ostream& os, const modint& m){
  // ここでストリームに obj を書き込みます。
  li a=m.num;
  a%=MOD;
  a+=MOD;
  a%=MOD;
  cout << a;
  return os;
}

std::istream& operator>>(std::istream& os,modint& m){
  // ここでストリームに obj を書き込みます。
  li a; cin >>a;
  m=a;
  return os;
}

modint pow(modint a,int r){
  if(a.num==0) return 0;
  modint b=a,s=1;
  while(r){
    if(r%2) s*=b;
    b*=b;
    r/=2;
  }
  return s;
}

modint inv(modint a){
  // MOD: prime
  return pow(a,MOD-2);
}


modint f(int x,int n,modint mn,modint mx){
  modint a=(pow(x,n)-mn)*mx*mx;
  modint b=mn*mx*n;
  return a-b;
}

int main(){
  int n,m; cin >>n >>m;
  vector<modint> dp(n+3,0);
  // dp[i][j] : [M]^(i+1) で最終が(j+1) min=k のときの和
  
  modint ans=pow(m,n)*n-pow(m,n-2)*(n-1);

  rep(_i,n-1){
    int i=_i+1;
    rep(_x,m-1){
      int x=_x+1;
      ans-=pow(m,i-1)*pow(x,n-1-i)*i;
    }
  }


  print(ans);
}

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int pow(ll a,ll b, ll m){
    if(b == 0)return 1;
    ll fix = 1;
    if(b % 2 != 0){
        fix = a;
        b--;
    }
    ll tmp = pow(a, b/2, m);
    return tmp * tmp % m * fix % m;
}
int main(){
    ll n,m;
    cin >> n >> m;
    ll res = pow(10,n,m*m);
    cout << res / m << endl;
}