#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <set>
#include <stack>
#include <queue>
#include <map>
#include <cstring>
#include <bitset>
#include <array>

using namespace std;

typedef long long ll;
const int maxn=2e5+5, mod=998244353, maxp=305, Log=30;

inline int sum(int a, int b){
	if(a+b>=mod){
		return a+b-mod;
	}
	if(a+b<0){
		return a+b+mod;
	}
	return a+b;
}

inline int mul(int a, int b){
	return (ll)a*b%mod;
}

int pote(int a, int b){
	int sol=1;
	for(int i=0; i<Log; i++){
		if((1<<i)&b){
			sol=mul(sol, a);
		}
		a=mul(a, a);
	}
	return sol;
}

int inv;
int a[maxn];
int pot[maxn][maxp];
int sumb[maxn][maxp];
int sump[maxp];
int n;

void precompute(){
	int suma;
	for(int i=0; i<n; i++){
		pot[i][1]=a[i];
		sumb[i][0]=n-1;
		for(int j=2; j<maxp; j++){
			pot[i][j]=mul(pot[i][j-1], a[i]);
		}
	}
	sump[0]=n;
	for(int i=1; i<maxp; i++){
		suma=0;
		for(int j=0; j<n; j++){
			suma=sum(suma, pot[j][i]);
		}
		sump[i]=suma;
		for(int j=0; j<n; j++){
			suma=sum(suma, -pot[j][i]);
			sumb[j][i]=suma;
		}
	}
	inv=pote(2, mod-2);
}

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int k;
	cin >> n >> k;
	for(int i=0; i<n; i++){
		cin >> a[i];
	}
	precompute();
	vector < int > pasc={1, 1};
	vector < int > vi;
	int sol;
	int pota, potb;
	int jed;
	for(int i=0; i<k; i++){
		sol=0;
		pota=i+1;
		potb=0;
		for(int j=0; j<(int)pasc.size()-1; j++){
			sol=sum(sol, mul(pasc[j], sum(mul(sump[pota], sump[potb]), -sump[i+1])));
			if(!j){
				jed=sol;
			}
			pota--;
			potb++;
		}
		sol=sum(sol, -jed);
		sol=mul(sol, inv);
		sol=sum(sol, jed);
		cout << sol << '\n';
		for(int j=0; j<(int)pasc.size(); j++){
			if(j){
				vi.push_back(sum(pasc[j], pasc[j-1]));
			}
			else{
				vi.push_back(pasc[j]);
			}
		}
		vi.push_back(pasc.back());
		pasc=vi;
		vi.clear();
	}
	return 0;
}

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cmath>
#include <iomanip>
#include <queue>
#include <map>
using namespace std;
using ll = long long int;
using P = pair<int, int>;

int main(){
    int n, m;
    cin >> n >> m;
    vector<int> a(n);
    for(auto &p: a) cin >> p;
    a.push_back(n+10);
    map<int, int> memo;
    vector<int> exist(n, 0);
    for(int i = 0; i <= n; i++) memo[i] = 1;
    int ans = 1001001001;
    for(int i = 0; i < m; i++){
        exist[a[i]] += 1;
    }
    for(int i = 0; i <= n; i++){
        if(exist[i] > 0){
            memo.erase(i);
        }
    }
    ans = memo.begin()->first;
    //cerr << ans << endl;
    for(int i = m; i < n; i++){
        exist[a[i]] += 1;
        memo.erase(a[i]);
        exist[a[i-m]] -= 1;
        if(exist[a[i-m]] == 0) memo[a[i-m]] = 1;
        ans = min(memo.begin()->first, ans);
    }
    cout << ans << endl;
    return 0;
}