만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

좋은 집합

시간 제한1초메모리 제한1024 MB

요약
0부터 2^k - 1까지의 정수 중 AND와 OR 연산에 닫혀 있고 주어진 n개의 정수를 모두 포함하는 공집합이 아닌 집합의 개수를 구합니다.
난이도

어려움10점 중 8점

유형
비트 연산, 동적 계획법, 조합론
정답자
아직 제출이 없습니다

문제

승현이는 수학자이고, 좋은 농담을 좋아한다.

집합 U={0,1,⋯ ,2k−1}U = \{0, 1, \cdots, 2^k - 1\}에 대해, 공집합이 아닌 부분집합 A⊂UA \subset U가 다음 두 규칙을 만족하면 AA를 좋은 집합이라고 한다.

  • 임의의 x,y∈Ax, y \in A에 대해 비트 AND 연산 x∧yx \land y의 결과는 AA에 속한다.
  • 임의의 x,y∈Ax, y \in A에 대해 비트 OR 연산 x∨yx \lor y의 결과는 AA에 속한다.

범위 [0,2k−1][0, 2^k-1]에 속하는 서로 다른 정수 nn개가 주어진다. 이 nn개의 정수를 모두 포함하는 좋은 집합의 개수를 구하라.

입력

첫 번째 줄에 정수 kk와 nn이 주어진다 (1≤k≤71 \le k \le 7, 0≤n≤2k0 \le n \le 2^k).

다음 줄에는 서로 다른 정수 a1,a2,⋯ ,ana_1, a_2, \cdots, a_n (0≤ai≤2k−10 \le a_i \le 2^k - 1)이 주어진다.

출력

좋은 집합의 개수를 나타내는 정수 하나를 출력한다.

예제2

  1. 예제 1

    입력
    2 1
    0
    
    예상 출력
    7
    
  2. 예제 2

    입력
    4 3
    1 2 7
    
    예상 출력
    29