#include <bits/stdc++.h>
using namespace std;
struct node {
  int l, r, v, pv;
} a[300010];
int b[100003], c[100003], num;
void build(int l, int r, int i) {
  a[i].l = l, a[i].r = r, a[i].pv = 0, a[i].v = 0;
  if (l == r) return;
  int m = (l + r) / 2;
  build(l, m, 2 * i), build(m + 1, r, 2 * i + 1);
}
void update(int p, int i, int v) {
  if (a[i].l == p && a[i].r == p) {
    a[i].pv += v;
    a[i].v = (a[i].pv == 1 ? 1 : 0);
    return;
  }
  int m = (a[i].l + a[i].r) / 2;
  if (p <= m)
    update(p, 2 * i, v);
  else
    update(p, 2 * i + 1, v);
  a[i].v = a[2 * i].v + a[2 * i + 1].v;
}
int query(int i) {
  if (a[i].v == 0) return 0x7fffffff;
  if (a[i].l == a[i].r) return a[i].l;
  if (a[2 * i + 1].v >= 1)
    return query(2 * i + 1);
  else
    return query(2 * i);
}
int getHash(int key) {
  int m, l = 0, r = num - 1;
  while (l <= r) {
    m = (l + r) / 2;
    if (key == c[m]) return m;
    if (key < c[m])
      r = m - 1;
    else
      l = m + 1;
  }
  return -1;
}
int main() {
  int n, k, i, j;
  while (~scanf("%d%d", &n, &k)) {
    for (i = 0; i < n; i++) scanf("%d", &b[i]), c[i] = b[i];
    sort(c, c + n);
    for (num = 1, i = 1; i < n; i++)
      if (c[i] != c[i - 1]) c[num++] = c[i];
    build(0, num - 1, 1);
    for (i = 0; i < k - 1; i++) update(getHash(b[i]), 1, 1);
    for (i = k - 1; i < n; i++) {
      update(getHash(b[i]), 1, 1);
      j = query(1);
      if (j != 0x7fffffff)
        printf("%d\n", c[j]);
      else
        printf("Nothing\n");
      update(getHash(b[i - k + 1]), 1, -1);
    }
  }
  return 0;
}
