# Author: Jeffery Kline
# Date: 2018-12-18
#
# This file contains a complete list of solutions to 
#
#    p**p + q**q = (4n-3) delta_0, 
#
# where p and q are symmetric length 2n-1 sequences, 
# p(0)=0, p(k)=+1,-1 when k!=0 and q(k) is +1,-1 for all k 
# and n<=16. The symbol ** means circular convolution.
#
# The file schema is
#
#     n  index  p  q
#
# where p and q have length 2n-1 and p[0] = 0.
#
# Illustrative Python code:
#
# from numpy import zeros_like, eye, block
# from scipy.linalg import circulant
# from numpy.fft import fft as dft, ifft as idft
# pstr, qstr = '0++--+----+--++ +-+----++----+-'.split()
# p, q = [int(_+'1') for _ in pstr], [int(_+'1') for _ in qstr]; p[0] = 0  
# n = (len(p)+1)/2
# delta = zeros_like(p); delta[0] = 1
# abs(idft(dft(p)**2 + dft(q)**2) - (4*n-3)*delta).max()
#
# I = eye(2*n-1)
# A = circulant(p) + I
# B = circulant(q)
# C = B
# D = A - 2 * I
# H = block([ [A, B, C, D], [B, D, -A, -C], [C, -A, -D, B], [D, -C, B, -A]])
# abs(H.T.dot(H) - 4*len(p) * eye(8*n-4)).max()
  1   0 0 +
  1   1 0 -
  2   0 0++ +--
  2   1 0++ -++
  2   2 0-- +--
  2   3 0-- -++
  3   0 0+--+ +----
  3   1 0+--+ -++++
  3   2 0-++- +----
  3   3 0-++- -++++
  4   0 0++--++ +-++++-
  4   1 0++--++ -+----+
  4   2 0+-++-+ +++--++
  4   3 0+-++-+ ---++--
  4   4 0+----+ ++-++-+
  4   5 0+----+ --+--+-
  4   6 0-++++- ++-++-+
  4   7 0-++++- --+--+-
  4   8 0-+--+- +++--++
  4   9 0-+--+- ---++--
  4  10 0--++-- +-++++-
  4  11 0--++-- -+----+
  5   0 0+++--+++ ++-+--+-+
  5   1 0+++--+++ --+-++-+-
  5   2 0+-++++-+ +--++++--
  5   3 0+-++++-+ -++----++
  5   4 0+------+ +-++--++-
  5   5 0+------+ -+--++--+
  5   6 0-++++++- +-++--++-
  5   7 0-++++++- -+--++--+
  5   8 0-+----+- +--++++--
  5   9 0-+----+- -++----++
  5  10 0---++--- ++-+--+-+
  5  11 0---++--- --+-++-+-
  7   0 0+++-+--+-+++ ++---+--+---+
  7   1 0+++-+--+-+++ --+++-++-+++-
  7   2 0+--++++++--+ +---+-++-+---
  7   3 0+--++++++--+ -+++-+--+-+++
  7   4 0+---+--+---+ +-++------++-
  7   5 0+---+--+---+ -+--++++++--+
  7   6 0-+++-++-+++- +-++------++-
  7   7 0-+++-++-+++- -+--++++++--+
  7   8 0-++------++- +---+-++-+---
  7   9 0-++------++- -+++-+--+-+++
  7  10 0---+-++-+--- ++---+--+---+
  7  11 0---+-++-+--- --+++-++-+++-
  8   0 0+++--+--+--+++ +-+----++----+-
  8   1 0+++--+--+--+++ -+-++++--++++-+
  8   2 0++--+----+--++ +-+----++----+-
  8   3 0++--+----+--++ -+-++++--++++-+
  8   4 0+-+--++++--+-+ ++--+------+--+
  8   5 0+-+--++++--+-+ --++-++++++-++-
  8   6 0+---+-++-+---+ ++--+------+--+
  8   7 0+---+-++-+---+ --++-++++++-++-
  8   8 0-+++-+--+-+++- ++--+------+--+
  8   9 0-+++-+--+-+++- --++-++++++-++-
  8  10 0-+-++----++-+- ++--+------+--+
  8  11 0-+-++----++-+- --++-++++++-++-
  8  12 0--++-++++-++-- +-+----++----+-
  8  13 0--++-++++-++-- -+-++++--++++-+
  8  14 0---++-++-++--- +-+----++----+-
  8  15 0---++-++-++--- -+-++++--++++-+
 10   0 0++++-+--++--+-++++ +---+++-+--+-+++---
 10   1 0++++-+--++--+-++++ -+++---+-++-+---+++
 10   2 0+++-+++----+++-+++ +-+--+--++++--+--+-
 10   3 0+++-+++----+++-+++ -+-++-++----++-++-+
 10   4 0+++-+--++++--+-+++ +-+++--+----+--+++-
 10   5 0+++-+--++++--+-+++ -+---++-++++-++---+
 10   6 0++-+-+++--+++-+-++ +--+---++++++---+--
 10   7 0++-+-+++--+++-+-++ -++-+++------+++-++
 10   8 0++----+----+----++ +-+---++-++-++---+-
 10   9 0++----+----+----++ -+-+++--+--+--+++-+
 10  10 0+-+--++++++++--+-+ ++--++-+----+-++--+
 10  11 0+-+--++++++++--+-+ --++--+-++++-+--++-
 10  12 0+-+----+--+----+-+ ++-++----++----++-+
 10  13 0+-+----+--+----+-+ --+--++++--++++--+-
 10  14 0+--++-++++++-++--+ +++---+-+--+-+---++
 10  15 0+--++-++++++-++--+ ---+++-+-++-+-+++--
 10  16 0+----+--++--+----+ ++-+-++------++-+-+
 10  17 0+----+--++--+----+ --+-+--++++++--+-+-
 10  18 0-++++-++--++-++++- ++-+-++------++-+-+
 10  19 0-++++-++--++-++++- --+-+--++++++--+-+-
 10  20 0-++--+------+--++- +++---+-+--+-+---++
 10  21 0-++--+------+--++- ---+++-+-++-+-+++--
 10  22 0-+-++++-++-++++-+- ++-++----++----++-+
 10  23 0-+-++++-++-++++-+- --+--++++--++++--+-
 10  24 0-+-++--------++-+- ++--++-+----+-++--+
 10  25 0-+-++--------++-+- --++--+-++++-+--++-
 10  26 0--++++-++++-++++-- +-+---++-++-++---+-
 10  27 0--++++-++++-++++-- -+-+++--+--+--+++-+
 10  28 0--+-+---++---+-+-- +--+---++++++---+--
 10  29 0--+-+---++---+-+-- -++-+++------+++-++
 10  30 0---+-++----++-+--- +-+++--+----+--+++-
 10  31 0---+-++----++-+--- -+---++-++++-++---+
 10  32 0---+---++++---+--- +-+--+--++++--+--+-
 10  33 0---+---++++---+--- -+-++-++----++-++-+
 10  34 0----+-++--++-+---- +---+++-+--+-+++---
 10  35 0----+-++--++-+---- -+++---+-++-+---+++
 11   0 0++++---+-++-+---++++ +++-+-++--++--++-+-++
 11   1 0++++---+-++-+---++++ ---+-+--++--++--+-+--
 11   2 0++-+++-+----+-+++-++ +++-+--+++--+++--+-++
 11   3 0++-+++-+----+-+++-++ ---+-++---++---++-+--
 11   4 0++-++---++++---++-++ ++++-+-+--++--+-+-+++
 11   5 0++-++---++++---++-++ ----+-+-++--++-+-+---
 11   6 0++--++-+-++-+-++--++ ++---+-++++++++-+---+
 11   7 0++--++-+-++-+-++--++ --+++-+--------+-+++-
 11   8 0+-+++--+-++-+--+++-+ +---+++++-++-+++++---
 11   9 0+-+++--+-++-+--+++-+ -+++-----+--+-----+++
 11  10 0+-+--++------++--+-+ +-++++-++----++-++++-
 11  11 0+-+--++------++--+-+ -+----+--++++--+----+
 11  12 0-+-++--++++++--++-+- +-++++-++----++-++++-
 11  13 0-+-++--++++++--++-+- -+----+--++++--+----+
 11  14 0-+---++-+--+-++---+- +---+++++-++-+++++---
 11  15 0-+---++-+--+-++---+- -+++-----+--+-----+++
 11  16 0--++--+-+--+-+--++-- ++---+-++++++++-+---+
 11  17 0--++--+-+--+-+--++-- --+++-+--------+-+++-
 11  18 0--+--+++----+++--+-- ++++-+-+--++--+-+-+++
 11  19 0--+--+++----+++--+-- ----+-+-++--++-+-+---
 11  20 0--+---+-++++-+---+-- +++-+--+++--+++--+-++
 11  21 0--+---+-++++-+---+-- ---+-++---++---++-+--
 11  22 0----+++-+--+-+++---- +++-+-++--++--++-+-++
 11  23 0----+++-+--+-+++---- ---+-+--++--++--+-+--
 13   0 0+++-+--+---++---+--+-+++ ++-----+-+--++--+-+-----+
 13   1 0+++-+--+---++---+--+-+++ --+++++-+-++--++-+-+++++-
 13   2 0++-+-+--++----++--+-+-++ +++----+---+--+---+----++
 13   3 0++-+-+--++----++--+-+-++ ---++++-+++-++-+++-++++--
 13   4 0+-+--+--+++--+++--+--+-+ +-+++------+--+------+++-
 13   5 0+-+--+--+++--+++--+--+-+ -+---++++++-++-++++++---+
 13   6 0+--+-+---++++++---+-+--+ +-----+-++--++--++-+-----
 13   7 0+--+-+---++++++---+-+--+ -+++++-+--++--++--+-+++++
 13   8 0+--+---++++--++++---+--+ +--++-+-+--------+-+-++--
 13   9 0+--+---++++--++++---+--+ -++--+-+-++++++++-+-+--++
 13  10 0-++-+++----++----+++-++- +--++-+-+--------+-+-++--
 13  11 0-++-+++----++----+++-++- -++--+-+-++++++++-+-+--++
 13  12 0-++-+-+++------+++-+-++- +-----+-++--++--++-+-----
 13  13 0-++-+-+++------+++-+-++- -+++++-+--++--++--+-+++++
 13  14 0-+-++-++---++---++-++-+- +-+++------+--+------+++-
 13  15 0-+-++-++---++---++-++-+- -+---++++++-++-++++++---+
 13  16 0--+-+-++--++++--++-+-+-- +++----+---+--+---+----++
 13  17 0--+-+-++--++++--++-+-+-- ---++++-+++-++-+++-++++--
 13  18 0---+-++-+++--+++-++-+--- ++-----+-+--++--+-+-----+
 13  19 0---+-++-+++--+++-++-+--- --+++++-+-++--++-+-+++++-
 14   0 0++-++-+---++--++---+-++-++ +---+++++-+-++++-+-+++++---
 14   1 0++-++-+---++--++---+-++-++ -+++-----+-+----+-+-----+++
 14   2 0++--++++-+------+-++++--++ +-+++-+++--+-++-+--+++-+++-
 14   3 0++--++++-+------+-++++--++ -+---+---++-+--+-++---+---+
 14   4 0++---+-+-++-++-++-+-+---++ +-++++++--++----++--++++++-
 14   5 0++---+-+-++-++-++-+-+---++ -+------++--++++--++------+
 14   6 0+-+++-++----++----++-+++-+ ++++-+--+-+++--+++-+--+-+++
 14   7 0+-+++-++----++----++-+++-+ ----+-++-+---++---+-++-+---
 14   8 0+-+++----++-++-++----+++-+ +++++--++-+-+--+-+-++--++++
 14   9 0+-+++----++-++-++----+++-+ -----++--+-+-++-+-+--++----
 14  10 0+-++-+--++------++--+-++-+ +++-+++---+-++++-+---+++-++
 14  11 0+-++-+--++------++--+-++-+ ---+---+++-+----+-+++---+--
 14  12 0+-+-++-++--------++-++-+-+ ++--+++-+--++++++--+-+++--+
 14  13 0+-+-++-++--------++-++-+-+ --++---+-++------++-+---++-
 14  14 0+--+-+++-++----++-+++-+--+ ++++-+++---+-++-+---+++-+++
 14  15 0+--+-+++-++----++-+++-+--+ ----+---+++-+--+-+++---+---
 14  16 0+----++-+-++--++-+-++----+ ++-+---++-++++++++-++---+-+
 14  17 0+----++-+-++--++-+-++----+ --+-+++--+--------+--+++-+-
 14  18 0-++++--+-+--++--+-+--++++- ++-+---++-++++++++-++---+-+
 14  19 0-++++--+-+--++--+-+--++++- --+-+++--+--------+--+++-+-
 14  20 0-++-+---+--++++--+---+-++- ++++-+++---+-++-+---+++-+++
 14  21 0-++-+---+--++++--+---+-++- ----+---+++-+--+-+++---+---
 14  22 0-+-+--+--++++++++--+--+-+- ++--+++-+--++++++--+-+++--+
 14  23 0-+-+--+--++++++++--+--+-+- --++---+-++------++-+---++-
 14  24 0-+--+-++--++++++--++-+--+- +++-+++---+-++++-+---+++-++
 14  25 0-+--+-++--++++++--++-+--+- ---+---+++-+----+-+++---+--
 14  26 0-+---++++--+--+--++++---+- +++++--++-+-+--+-+-++--++++
 14  27 0-+---++++--+--+--++++---+- -----++--+-+-++-+-+--++----
 14  28 0-+---+--++++--++++--+---+- ++++-+--+-+++--+++-+--+-+++
 14  29 0-+---+--++++--++++--+---+- ----+-++-+---++---+-++-+---
 14  30 0--+++-+-+--+--+--+-+-+++-- +-++++++--++----++--++++++-
 14  31 0--+++-+-+--+--+--+-+-+++-- -+------++--++++--++------+
 14  32 0--++----+-++++++-+----++-- +-+++-+++--+-++-+--+++-+++-
 14  33 0--++----+-++++++-+----++-- -+---+---++-+--+-++---+---+
 14  34 0--+--+-+++--++--+++-+--+-- +---+++++-+-++++-+-+++++---
 14  35 0--+--+-+++--++--+++-+--+-- -+++-----+-+----+-+-----+++
 16   0 0+++++-+--+---++++---+--+-+++++ +--++---+-+-++----++-+-+---++--
 16   1 0+++++-+--+---++++---+--+-+++++ -++--+++-+-+--++++--+-+-+++--++
 16   2 0+++++---+-+-++--++-+-+---+++++ +--+++-+--+----++----+--+-+++--
 16   3 0+++++---+-+-++--++-+-+---+++++ -++---+-++-++++--++++-++-+---++
 16   4 0++++-+-+-++--+--+--++-+-+-++++ +----++++--+---++---+--++++----
 16   5 0++++-+-+-++--+--+--++-+-+-++++ -++++----++-+++--+++-++----++++
 16   6 0+++--++-+-+++----+++-+-++--+++ +-+----+--+--++++++--+--+----+-
 16   7 0+++--++-+-+++----+++-+-++--+++ -+-++++-++-++------++-++-++++-+
 16   8 0+++---+-+----+--+----+-+---+++ +-++-----+-++--++--++-+-----++-
 16   9 0+++---+-+----+--+----+-+---+++ -+--+++++-+--++--++--+-+++++--+
 16  10 0++-+----+--++----++--+----+-++ +---+-+----+++-++-+++----+-+---
 16  11 0++-+----+--++----++--+----+-++ -+++-+-++++---+--+---++++-+-+++
 16  12 0++--+-++---++++++++---++-+--++ +-+-+++--+----+--+----+--+++-+-
 16  13 0++--+-++---++++++++---++-+--++ -+-+---++-++++-++-++++-++---+-+
 16  14 0++---+--+-+---++---+-+--+---++ +-++--+-+++----------+++-+--++-
 16  15 0++---+--+-+---++---+-+--+---++ -+--++-+---++++++++++---+-++--+
 16  16 0++----+-+++-++++++-+++-+----++ +-+--+--+---+++--+++---+--+--+-
 16  17 0++----+-+++-++++++-+++-+----++ -+-++-++-+++---++---+++-++-++-+
 16  18 0+-+--+--++++-++++-++++--+--+-+ ++---+-+++--+------+--+++-+---+
 16  19 0+-+--+--++++-++++-++++--+--+-+ --+++-+---++-++++++-++---+-+++-
 16  20 0+-+----+-++---++---++-+----+-+ ++-+++-----+--+--+--+-----+++-+
 16  21 0+-+----+-++---++---++-+----+-+ --+---+++++-++-++-++-+++++---+-
 16  22 0+--+-++++--++-++-++--++++-+--+ ++++---+---+-+----+-+---+---+++
 16  23 0+--+-++++--++-++-++--++++-+--+ ----+++-+++-+-++++-+-+++-+++---
 16  24 0+---+-++++++--++--++++++-+---+ ++--+-++-+---+----+---+-++-+--+
 16  25 0+---+-++++++--++--++++++-+---+ --++-+--+-+++-++++-+++-+--+-++-
 16  26 0+---+-+--+--++--++--+--+-+---+ ++-------++-+-++++-+-++-------+
 16  27 0+---+-+--+--++--++--+--+-+---+ --+++++++--+-+----+-+--+++++++-
 16  28 0+-----+---++-++++-++---+-----+ ++----+-+-++--+--+--++-+-+----+
 16  29 0+-----+---++-++++-++---+-----+ --++++-+-+--++-++-++--+-+-++++-
 16  30 0-+++++-+++--+----+--+++-+++++- ++----+-+-++--+--+--++-+-+----+
 16  31 0-+++++-+++--+----+--+++-+++++- --++++-+-+--++-++-++--+-+-++++-
 16  32 0-+++-+-++-++--++--++-++-+-+++- ++-------++-+-++++-+-++-------+
 16  33 0-+++-+-++-++--++--++-++-+-+++- --+++++++--+-+----+-+--+++++++-
 16  34 0-+++-+------++--++------+-+++- ++--+-++-+---+----+---+-++-+--+
 16  35 0-+++-+------++--++------+-+++- --++-+--+-+++-++++-+++-+--+-++-
 16  36 0-++-+----++--+--+--++----+-++- ++++---+---+-+----+-+---+---+++
 16  37 0-++-+----++--+--+--++----+-++- ----+++-+++-+-++++-+-+++-+++---
 16  38 0-+-++++-+--+++--+++--+-++++-+- ++-+++-----+--+--+--+-----+++-+
 16  39 0-+-++++-+--+++--+++--+-++++-+- --+---+++++-++-++-++-+++++---+-
 16  40 0-+-++-++----+----+----++-++-+- ++---+-+++--+------+--+++-+---+
 16  41 0-+-++-++----+----+----++-++-+- --+++-+---++-++++++-++---+-+++-
 16  42 0--++++-+---+------+---+-++++-- +-+--+--+---+++--+++---+--+--+-
 16  43 0--++++-+---+------+---+-++++-- -+-++-++-+++---++---+++-++-++-+
 16  44 0--+++-++-+-+++--+++-+-++-+++-- +-++--+-+++----------+++-+--++-
 16  45 0--+++-++-+-+++--+++-+-++-+++-- -+--++-+---++++++++++---+-++--+
 16  46 0--++-+--+++--------+++--+-++-- +-+-+++--+----+--+----+--+++-+-
 16  47 0--++-+--+++--------+++--+-++-- -+-+---++-++++-++-++++-++---+-+
 16  48 0--+-++++-++--++++--++-++++-+-- +---+-+----+++-++-+++----+-+---
 16  49 0--+-++++-++--++++--++-++++-+-- -+++-+-++++---+--+---++++-+-+++
 16  50 0---+++-+-++++-++-++++-+-+++--- +-++-----+-++--++--++-+-----++-
 16  51 0---+++-+-++++-++-++++-+-+++--- -+--+++++-+--++--++--+-+++++--+
 16  52 0---++--+-+---++++---+-+--++--- +-+----+--+--++++++--+--+----+-
 16  53 0---++--+-+---++++---+-+--++--- -+-++++-++-++------++-++-++++-+
 16  54 0----+-+-+--++-++-++--+-+-+---- +----++++--+---++---+--++++----
 16  55 0----+-+-+--++-++-++--+-+-+---- -++++----++-+++--+++-++----++++
 16  56 0-----+++-+-+--++--+-+-+++----- +--+++-+--+----++----+--+-+++--
 16  57 0-----+++-+-+--++--+-+-+++----- -++---+-++-++++--++++-++-+---++
 16  58 0-----+-++-+++----+++-++-+----- +--++---+-+-++----++-+-+---++--
 16  59 0-----+-++-+++----+++-++-+----- -++--+++-+-+--++++--+-+-+++--++