# 適当再帰 from functools import lru_cache N, K = map(int, input().split()) Ps = list(map(int, input().split())) @lru_cache(None) def rec(begin, div): if div == 1: return int((max(Ps[begin:]) - min(Ps[begin:])) == (N - begin - 1)) ret = 0 m = Ps[begin] M = Ps[begin] for end in range(begin + 1, N): if M - m == end - begin - 1: ret += rec(end, div - 1) m = min(m, Ps[end]) M = max(M, Ps[end]) return ret for X in range(1, K + 1): print(rec(0, X))