/* Sat-Chitta-Ananda */
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define double long double
#define inf (int)1e9
#define f first
#define s second
const int MOD = (int)1e9+7;
int n, m;
int a[100005];
int dp[100002][101];
int memo(int index, int prev)
{
if(index == n) return 1;
if(a[index] && index && abs(prev - a[index]) > 1) return 0;
if(dp[index][prev] != -1) return dp[index][prev];
int ans = 0;
if(a[index] == 0) {
int start, end;
if(prev == 0) start = 1, end = m;
else start = max(prev-1, 1LL), end = min(m, prev+1);
for(int i = start ; i <= end ; ++i) {
ans = (ans + memo(index+1, i) % MOD) % MOD;
}
}
else ans = (ans + memo(index+1, a[index]) % MOD) % MOD;
return dp[index][prev] = ans % MOD;
}
int32_t main()
{
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n >> m;
for(int i = 0 ; i < n ; ++i) cin >> a[i];
memset(dp, -1, sizeof dp);
cout << memo(0, 0) % MOD << '\n';
return 0;
}
LyogU2F0LUNoaXR0YS1BbmFuZGEgKi8KIAojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZG91YmxlIGxvbmcgZG91YmxlCiNkZWZpbmUgaW5mIChpbnQpMWU5CiNkZWZpbmUgZiBmaXJzdAojZGVmaW5lIHMgc2Vjb25kCgpjb25zdCBpbnQgTU9EID0gKGludCkxZTkrNzsKIAppbnQgbiwgbTsKaW50IGFbMTAwMDA1XTsKaW50IGRwWzEwMDAwMl1bMTAxXTsKCmludCBtZW1vKGludCBpbmRleCwgaW50IHByZXYpCnsKCWlmKGluZGV4ID09IG4pIHJldHVybiAxOwoJaWYoYVtpbmRleF0gJiYgaW5kZXggJiYgYWJzKHByZXYgLSBhW2luZGV4XSkgPiAxKSByZXR1cm4gMDsKCWlmKGRwW2luZGV4XVtwcmV2XSAhPSAtMSkgcmV0dXJuIGRwW2luZGV4XVtwcmV2XTsKIAoJaW50IGFucyA9IDA7CglpZihhW2luZGV4XSA9PSAwKSB7CgkJaW50IHN0YXJ0LCBlbmQ7CgkJaWYocHJldiA9PSAwKSBzdGFydCA9IDEsIGVuZCA9IG07CgkJZWxzZSBzdGFydCA9IG1heChwcmV2LTEsIDFMTCksIGVuZCA9IG1pbihtLCBwcmV2KzEpOwoJCQkKCQlmb3IoaW50IGkgPSBzdGFydCA7IGkgPD0gZW5kIDsgKytpKSB7CgkJCWFucyA9IChhbnMgKyBtZW1vKGluZGV4KzEsIGkpICUgTU9EKSAlIE1PRDsKCQl9Cgl9CgllbHNlIGFucyA9IChhbnMgKyBtZW1vKGluZGV4KzEsIGFbaW5kZXhdKSAlIE1PRCkgJSBNT0Q7CglyZXR1cm4gZHBbaW5kZXhdW3ByZXZdID0gYW5zICUgTU9EOwp9CiAKaW50MzJfdCBtYWluKCkKewoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwoJCgljaW4gPj4gbiA+PiBtOwoJZm9yKGludCBpID0gMCA7IGkgPCBuIDsgKytpKSBjaW4gPj4gYVtpXTsKIAoJbWVtc2V0KGRwLCAtMSwgc2l6ZW9mIGRwKTsKCWNvdXQgPDwgbWVtbygwLCAwKSAlIE1PRCA8PCAnXG4nOwogCglyZXR1cm4gMDsKfQ==