from operator import mul

from functools import reduce



N, P = list(map(int, input().split()))

A = list(map(int, input().split()))

cE, cO = 0, 0



for a in A:

    if a % 2 == 0:

        cE += 1

    else:

        cO += 1





# 全て偶数

if cO == 0:

    ans = 2 ** N if P == 0 else 0

    print(ans)

else:

    # 偶数が含まれている

    # ある奇数$k$について考える

    # 残りの奇数がcO-1個，偶数がcE個残っている，この選び方は2 ** (N - 1)通り

    # 選んだ合計がSとする

    # - Sが奇数である: Akを選ぶと全体は偶数，選ばないと全体は奇数

    # - Sが偶数である: Akを選ぶと全体は奇数，選ばないと全体は偶数

    # よってそれぞれの2 ** (N - 1)通りについて，Akを選ぶ・選ばないが1通り存在する

    # print(2 ** (cO - 1) * 2 ** cE)

    print((2 ** (N - 1)))
from sys import stdin, setrecursionlimit

from collections import Counter, deque, defaultdict

from math import floor, ceil

from bisect import bisect_left

from itertools import combinations

setrecursionlimit(100000)



INF = int(1e10)

MOD = int(1e9 + 7)



def main():

    from builtins import int, map

    N, P = list(map(int, input().split()))

    A = list(map(int, input().split()))

    



    count_even, count_odd = 0, 0

    for a in A:

        if a % 2 == 0:

            count_even += 1

        else:

            count_odd += 1

    

    ans = -1

    # print(N, P, A)

    # print(count_even, count_odd)

    if count_odd == 0:

        # 偶数しかない

        if P == 0:

            # 偶数にしたい => どれでもOK

            ans = 2 ** N

        else:

            # 奇数枚は食べられない

            ans = 0

    else:

        # 奇数が1以上存在するので，ある1つ以外の和Sを考える

        # S is odd: 食べたらeven，食べないとodd => 2 ^ (N-1) パターン

        # S is even: 食べたらodd，食べないとeven

        ans = 2 ** (N - 1)

    print(ans)





if __name__ == '__main__':

    main()

from operator import mul
from functools import reduce

N, P = list(map(int, input().split()))
A = list(map(int, input().split()))
cE, cO = 0, 0
for a in A:
    if a % 2 == 0:
        cE += 1
    else:
        cO += 1
# 全て偶数
if cO == 0:
    ans = 2**N if P == 0 else 0
    print(ans)
else:
    # 偶数が含まれている
    # ある奇数$k$について考える
    # 残りの奇数がcO-1個，偶数がcE個残っている，この選び方は2 ** (N - 1)通り
    # 選んだ合計がSとする
    # - Sが奇数である: Akを選ぶと全体は偶数，選ばないと全体は奇数
    # - Sが偶数である: Akを選ぶと全体は奇数，選ばないと全体は偶数
    # よってそれぞれの2 ** (N - 1)通りについて，Akを選ぶ・選ばないが1通り存在する
    # print(2 ** (cO - 1) * 2 ** cE)
    print((2 ** (N - 1)))

from sys import stdin, setrecursionlimit
from collections import Counter, deque, defaultdict
from math import floor, ceil
from bisect import bisect_left
from itertools import combinations

setrecursionlimit(100000)
INF = int(1e10)
MOD = int(1e9 + 7)


def main():
    from builtins import int, map

    N, P = list(map(int, input().split()))
    A = list(map(int, input().split()))
    count_even, count_odd = 0, 0
    for a in A:
        if a % 2 == 0:
            count_even += 1
        else:
            count_odd += 1
    ans = -1
    # print(N, P, A)
    # print(count_even, count_odd)
    if count_odd == 0:
        # 偶数しかない
        if P == 0:
            # 偶数にしたい => どれでもOK
            ans = 2**N
        else:
            # 奇数枚は食べられない
            ans = 0
    else:
        # 奇数が1以上存在するので，ある1つ以外の和Sを考える
        # S is odd: 食べたらeven，食べないとodd => 2 ^ (N-1) パターン
        # S is even: 食べたらodd，食べないとeven
        ans = 2 ** (N - 1)
    print(ans)


if __name__ == "__main__":
    main()

-from operator import mul -from functools import reduce +from sys import stdin, setrecursionlimit +from collections import Counter, deque, defaultdict +from math import floor, ceil +from bisect import bisect_left +from itertools import combinations -N, P = list(map(int, input().split())) -A = list(map(int, input().split())) -cE, cO = 0, 0 -for a in A: -    if a % 2 == 0: -        cE += 1 +setrecursionlimit(100000) +INF = int(1e10) +MOD = int(1e9 + 7) + + +def main(): +    from builtins import int, map + +    N, P = list(map(int, input().split())) +    A = list(map(int, input().split())) +    count_even, count_odd = 0, 0 +    for a in A: +        if a % 2 == 0: +            count_even += 1 +        else: +            count_odd += 1 +    ans = -1 +    # print(N, P, A) +    # print(count_even, count_odd) +    if count_odd == 0: +        # 偶数しかない +        if P == 0: +            # 偶数にしたい => どれでもOK +            ans = 2**N +        else: +            # 奇数枚は食べられない +            ans = 0 -        cO += 1 -# 全て偶数 -if cO == 0: -    ans = 2**N if P == 0 else 0 +        # 奇数が1以上存在するので，ある1つ以外の和Sを考える +        # S is odd: 食べたらeven，食べないとodd => 2 ^ (N-1) パターン +        # S is even: 食べたらodd，食べないとeven +        ans = 2 ** (N - 1) -else: -    # 偶数が含まれている -    # ある奇数$k$について考える -    # 残りの奇数がcO-1個，偶数がcE個残っている，この選び方は2 ** (N - 1)通り -    # 選んだ合計がSとする -    # - Sが奇数である: Akを選ぶと全体は偶数，選ばないと全体は奇数 -    # - Sが偶数である: Akを選ぶと全体は奇数，選ばないと全体は偶数 -    # よってそれぞれの2 ** (N - 1)通りについて，Akを選ぶ・選ばないが1通り存在する -    # print(2 ** (cO - 1) * 2 ** cE) -    print((2 ** (N - 1))) + + +if __name__ == "__main__": +    main()