// iostream is too mainstream
#include <cstdio>
// bitch please
#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <string>
#include <queue>
#include <stack>
#include <algorithm>
#include <cmath>
#include <iomanip>
#define dibs reserve
#define OVER9000 1234567890
#define patkan 9
#define tisic 47
#define soclose 1e-9
#define pi 3.1415926535898
#define ALL_THE(CAKE,LIE) for(auto LIE =CAKE.begin(); LIE != CAKE.end(); LIE++)
#define chocolate win
#define ff first
#define ss second
#define abs(x) ((x < 0)?-(x):(x))
#define uint unsigned int
// mylittlepony
using namespace std;

long long pow(long long a, long long e, long long m) {
    if(e <= 0) return 1;
    int x =pow(a,e/2,m);
    x =(x*x)%m;
    if(e%2 != 0) x =(x*a)%m;
    return x;}

int main() {
    cin.sync_with_stdio(0);
    int N,K,M;
    cin >> N >> K >> M;
    int mod =(1<<M)-1;

    vector<int> A[N/2+1];
    A[0].push_back(0);
    for(int i =0; i < N/2; i++) {
        A[i+1].dibs(A[i].size()*26);
        ALL_THE(A[i],it) for(int j =1; j <= 26; j++)
            A[i+1].push_back((((*it)*33)^j)&mod);
        }

    int n =N-N/2;
    int inv =(int)pow(33LL,(1LL<<(M-1))-1LL,1LL<<M);

    vector<int> B[n+1];
    B[0].push_back(K);
    for(int i =0; i < n; i++) {
		B[i+1].dibs(B[i].size()*26);
		ALL_THE(B[i],it) for(int j =1; j <= 26; j++)
			B[i+1].push_back((((*it)^j)*inv)&mod);
        }

    vector<int> sA(1<<M,0);
    ALL_THE(A[N/2],it) sA[*it]++;

    long long ans =0;
    ALL_THE(B[n],it) ans +=sA[*it];
    cout << ans << "\n";
    return 0;}

// look at my code
// my code is amazing
