You are given n numbers a1, a2, ..., an. You can perform at most k operations. For each operation you can multiply one of the numbers by x. We want to make <image> as large as possible, where <image> denotes the bitwise OR. 

Find the maximum possible value of <image> after performing at most k operations optimally.

Input

The first line contains three integers n, k and x (1 ≤ n ≤ 200 000, 1 ≤ k ≤ 10, 2 ≤ x ≤ 8).

The second line contains n integers a1, a2, ..., an (0 ≤ ai ≤ 109).

Output

Output the maximum value of a bitwise OR of sequence elements after performing operations.

Examples

Input

3 1 2
1 1 1


Output

3


Input

4 2 3
1 2 4 8


Output

79

Note

For the first sample, any possible choice of doing one operation will result the same three numbers 1, 1, 2 so the result is <image>. 

For the second sample if we multiply 8 by 3 two times we'll get 72. In this case the numbers will become 1, 2, 4, 72 so the OR value will be 79 and is the largest possible result.
/*
                          # # ###### #                          
                      # ### # # #  # #####                      
                    ### #   #   ## #    #  #                    
                 #### # # #####    #### # ### #                 
                ##      # #     ####    # # # ##                
              #  ## ##### ### ### #  # ##   #  # #              
             ###  #  #      # #   ####  ## ## ## ##             
           ###### ## ## ### ### ###    ##  #  #   ###           
          ############    #     #   # ##  ## ## #  ###          
         #################### #######  ####  ##########         
        ################################################        
       ##################################################       
       ##################################################       
      ####################################################      
     ######################################################     
     ######################################################     
    ########################################################    
   ##########################################################   
     ########################################################   
       ############   #  ##############   # # #############     
  ##     #########  #   ############### #       ########        
  ####     #####   ## #   ############### ## ##  # ##       ##  
 #######     #   ###  ###  ########### #  #   ##         ###### 
 #########     #  #  ## ##   ######### ## #####  #    ######### 
 ############ ## ###     ###  #######   #  #    ### ########### 
 #########     #   ### ###   ######## # ##### #   #  # ######## 
############ ### #  #  #   #  ######  #  #    ## ###   #########
###########   #  # ## ### ### #### # ### ####  ###   # #########
########### ###### ####    #  # #    # #  # ####   ### #########
###########     #  #  ### ###   # # ## ## #  #   #  #  #########
############ ## #### ## ###   # ###     #### # ###### ##########
###########   ###  #  #   ### #  ### ####  # ###   #   #########
#############     ## ### ## ### ##     #  ## ##  #   # #########
############## ## #    # #    # #  # # ## #   ## ## ############
############    #### # # # # #### ## #  # ###  ###   ###########
############# #  #   ###   ####   #  ##    #  ##   #############
################   ###   # ## ## ## ##  # ### #  #  ############
##################   # ######     #######   #   ################
 ################  #    ##### # ###########   #  ############## 
 ##############################    ############################ 
 ########################### #  # ############################# 
 ######################### #   ################################ 
  ########################   #   #############################  
  #######  ################### ###############################  
   ####### # ################   ##################### #######   
   #######   #   ###########  # ########### ##### #    ######   
   ####### # # #  # #   ## # ##  # #  # ##   ##     # #######   
    ########   ##     #       ##   ##      # #  ### ########    
     ####### #  #### #### ###  ###    ### ##### # #########     
     ########## #  #  #   # #### ### ## #     #   #########     
      ########    ## ## #    #   # #    ### #   ##########      
       ######### ##   ##### ## # #   # ##   #############       
       #########  ###  # #   ###   # ###  #   ###########       
        #########   ####   ### ## #### #### ############        
         ######### ##    # #      #    # ##############         
          ############ # #### ## ## # ##  ############          
           #############    ####    #    ############           
             #################### #################             
              ####################################              
                ################################                
                 ##############################                 
                    ########################                    
                      ####################                      
                          ############
*/

import java.util.*;
import java.io.*;
import java.math.BigInteger; 
 
  public class Task{
// taking inputs
static BufferedReader s1;
static BufferedWriter out;
static String read() throws IOException{String line="";while(line.length()==0){line=s1.readLine();continue;}return line;}
static int int_v (String s1){return Integer.parseInt(s1);}
static long long_v(String s1){return Long.parseLong(s1);}
static int[] int_arr() throws IOException{String[] a=read().split(" ");int[] b=new int[a.length];for(int i=0;i<a.length;i++){b[i]=int_v(a[i]);}return b;}
static long[] long_arr() throws IOException{String[] a=read().split(" ");long[] b=new long[a.length];for(int i=0;i<a.length;i++){b[i]=long_v(a[i]);}return b;}
static void assign(){s1=new BufferedReader(new InputStreamReader(System.in));out=new BufferedWriter(new OutputStreamWriter(System.out));}

public static void main(String[] args) throws  IOException{
	        		  assign();
              int[] z=int_arr();
              int n=z[0],k=z[1],x=z[2];
              int[] arr=int_arr();
              long f=0;
              
            int[] pre=new int[n+2];
            int[] post=new int[n+2];
            for(int i=1;i<=n;i++){pre[i]=pre[i-1]|arr[i-1];}
            for(int i=n;i>=1;i--){post[i]=post[i+1]|arr[i-1];}
            for(int i=1;i<=n;i++){
            	f=Math.max(f,pre[i-1]|(long)arr[i-1]*(int)Math.pow(x,k)|post[i+1]);
            }
            out.write(f+"\n");
            out.flush();
	        }
	    }
 