#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("avx,avx2,sse,sse2")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007
#define pi 3.141592653589
#define pb push_back
#define nl cout<<"\n"
#define db(x) cout<<x<<" "
#define fi(a,b) for(int i=a;i<b;i++)
#define fj(a,b) for(int j=a;j<b;j++)
#define fk(a,b) for(int k=a;k<b;k++)
#define F first
#define S second
ll fastexp(ll a,ll n,ll nod=LLONG_MAX){
    ll ans=1;
    while(n){
        if(n&1)
            ans=(ans*a)%nod;
        a=(a*a)%nod;
        n>>=1;
    }
    return ans;
}
#define mxsize (int)3e5

void fun(){
    int n;
    cin>>n;
    fi(1,n+1)   cout<<(2*i)%n+1<<" "<<(2*i+1)%n+1<<"\n";
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cout.precision(20);
    cout<<fixed;
    #ifndef ONLINE_JUDGE
        freopen("/ATOM/input.txt", "r", stdin);
        freopen("/ATOM/output.txt", "w", stdout);
    #endif
    int t=1;
    // cin>>t;
    while(t--){
        fun();
    }
}
#include<stdio.h>
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#define MAXN 200005
#define max_num 1000000
#define MOD 998244353
#define LL long long
using namespace std;
LL sum[MAXN];
LL a[MAXN], p[MAXN];
LL C[MAXN][305];
int n, k;
LL pow(LL x, LL nn)
{
    LL res = 1LL;
    while(nn)
    {
        if(nn & 1) res = (res * x) % MOD;
        x = (x * x) % MOD;
        nn >>= 1;
    }
    return res;
}
int main()
{
    C[1][0] = C[1][1] = 1LL;
    for(int i = 2; i <= 300; i++)
    {
        C[i][0] = C[i][i] = 1LL;
        for(int j = 1; j < i; j++)
        {
            C[i][j] = (C[i - 1][j-1] + C[i - 1][j]) % MOD;
        }
    }
    //while(cin >> n >> k) cout << pow(n, k) << endl;
    while(cin >> n >> k)
    {
        for(int i = 1; i <= n; i++)
        {
            scanf("%lld", &a[i]);
            a[i] = a[i] % MOD;
        }
        for(int i = 1; i <= n; i++) p[i] = 1LL;
        for(int x = 0; x <= k; x++)
        {
            LL tmp = 0;
            for(int i = 1; i <= n; i++)
            {
                tmp = (tmp + p[i]) % MOD;
                p[i] = (p[i] * a[i]) % MOD;
            }
            sum[x] = tmp;
        }
        
        LL div = pow(2LL, MOD - 2LL);
        for(int x = 1; x <= k; x++)
        {
            LL ans = 0;
            for(int i = 0; i <= x; i++)
            {
                LL tmp = (sum[i] * sum[x - i] % MOD - sum[x] + MOD) % MOD * C[x][i] % MOD;
                //tmp = tmp * div % MOD;
                ans = (ans + tmp) % MOD;
            }
            //ans = (ans + sum[x] + sum[x]) % MOD;
            ans = (ans * div) % MOD;
            cout << ans << endl;
        }
    }
    return 0;
}