Given a list of `1`s and `-1`s, determine whether or not it is a valid [OVSF code](https://en.wikipedia.org/wiki/Chip_(CDMA)#Orthogonal_variable_spreading_factor) (by outputting a truthy or falsey value).

OVSF codes are defined as follows:

* `[1]` is an OVSF code.

* If `X` is an OVSF code, then `X ++ X` and `X ++ -X` are both OVSF codes.

  Here `++` is list concatenation, and `-` negates every element in the list.

* No other lists are valid OVSF codes.

You may assume the input list contains only `-1` and `1`, but you must handle the empty list correctly, as well as lists whose length is not a power of 2.

Shortest code (in bytes) wins.

# Test cases

    [] -> False
    [1] -> True
    [-1] -> False
    [1, 1] -> True
    [1, -1] -> True
    [-1, 1] -> False
    [-1, -1] -> False
    [1, 1, 1, 1] -> True
    [1, 1, 1, 1, 1] -> False
    [1, -1, -1, 1, -1, 1, 1, -1] -> True
    [1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1] -> False
    [1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1] -> False
    [1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1] -> True