import Data.Bits import Data.Array main = do n <- read <$> getLine :: IO Int ns <- listArray (1,n) . map read . words <$> getLine :: IO (Array Int Int) let memo = dp ns 0 n (listArray (0,1) []) print . sum $ [if memo!i then 1 else 0 | i<-[0..r]] r = 16384 dp :: Array Int Int -> Int -> Int -> Array Int Bool -> Array Int Bool dp ns y n memo = if y > n then memo else dp ns (y+1) n memo' where memo' = array (0,r) $ [(x, f y x)|x<-[0..r]] f 0 0 = True f 0 _ = False f y x = memo!x || (if x `xor` ns!y < r then memo!(x `xor` (ns!y)) else False)