#include <bits/stdc++.h>
#pragma GCC optimize("Ofast,unroll-loops,no-stack-protector")
using namespace std;
using ld = long double;
using lli = long long;
using ii = pair<int, int>;
using vi = vector<int>;
template <int p>
struct Modular {
  int v;
  Modular(lli x = 0) {
    if (abs(x) >= p) x %= p;
    if (x < 0) x += p;
    v = x;
  }
  Modular operator+(const Modular &m) const { return Modular(v + m.v); }
  Modular operator-(const Modular &m) const { return Modular(v - m.v + p); }
  Modular operator*(const Modular &m) const { return Modular(1LL * v * m.v); }
  Modular operator/(const Modular &m) const { return *this * m.inv(); }
  Modular inv() const { return Modular(minv(v, p)); }
  Modular operator-() const { return Modular(-v); }
  Modular &operator+=(const Modular &m) { return *this = *this + m; }
  Modular &operator-=(const Modular &m) { return *this = *this - m; }
  Modular &operator*=(const Modular &m) { return *this = *this * m; }
  Modular &operator/=(const Modular &m) { return *this = *this / m; }
  friend ostream &operator<<(ostream &os, const Modular &m) {
    return os << m.v;
  }
  friend istream &operator>>(istream &is, Modular &m) { return is >> m.v; }

 private:
  static int minv(int a, int m) {
    a %= m;
    assert(a);
    return a == 1 ? 1 : int(m - lli(minv(m, a)) * lli(m) / a);
  }
};
using Mint = Modular<998244353>;
template <class T>
T fpow(T x, lli n) {
  T r(1);
  for (; n > 0; n >>= 1) {
    if (n & 1) r = r * x;
    x = x * x;
  }
  return r;
}
int n;
int main() {
  cin.tie(0)->sync_with_stdio(0), cout.tie(0);
  while (cin >> n) {
    for (auto i = (1) - ((1) > (n + 1)); i != (n + 1) - ((1) > (n + 1));
         i += 1 - 2 * ((1) > (n + 1))) {
      if (i == n) {
        cout << 10 << '\n';
      } else {
        Mint ways = Mint(180) * fpow<Mint>(10, n - i - 1);
        ways += Mint(n - i - 1) * 81 * fpow<Mint>(10, n - i - 1);
        cout << ways << " ";
      }
    }
  }
  return 0;
}
