# 
# QR Code generator test worker (Python 2, 3)
# 
# This program reads data and encoding parameters from standard input and writes
# QR Code bitmaps to standard output. The I/O format is one integer per line.
# Run with no command line arguments. The program is intended for automated
# batch testing of end-to-end functionality of this QR Code generator library.
# 
# Copyright (c) Project Nayuki. (MIT License)
# https://www.nayuki.io/page/qr-code-generator-library
# 
# Permission is hereby granted, free of charge, to any person obtaining a copy of
# this software and associated documentation files (the "Software"), to deal in
# the Software without restriction, including without limitation the rights to
# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
# the Software, and to permit persons to whom the Software is furnished to do so,
# subject to the following conditions:
# - The above copyright notice and this permission notice shall be included in
#   all copies or substantial portions of the Software.
# - The Software is provided "as is", without warranty of any kind, express or
#   implied, including but not limited to the warranties of merchantability,
#   fitness for a particular purpose and noninfringement. In no event shall the
#   authors or copyright holders be liable for any claim, damages or other
#   liability, whether in an action of contract, tort or otherwise, arising from,
#   out of or in connection with the Software or the use or other dealings in the
#   Software.
# 

from __future__ import print_function
import sys
import qrcodegen
py3 = sys.version_info.major >= 3


def read_int():
	return int((input if py3 else raw_input)())


def main():
	while True:
		
		# Read data or exit
		length = read_int()
		if length == -1:
			break
		data = [read_int() for _ in range(length)]
		
		# Read encoding parameters
		errcorlvl  = read_int()
		minversion = read_int()
		maxversion = read_int()
		mask       = read_int()
		boostecl   = read_int()
		
		# Make segments for encoding
		if all((b < 128) for b in data):  # Is ASCII
			segs = qrcodegen.QrSegment.make_segments("".join(chr(b) for b in data))
		elif py3:
			segs = [qrcodegen.QrSegment.make_bytes(bytes(data))]
		else:
			segs = [qrcodegen.QrSegment.make_bytes("".join(chr(b) for b in data))]
		
		try:  # Try to make QR Code symbol
			qr = qrcodegen.QrCode.encode_segments(segs, ECC_LEVELS[errcorlvl], minversion, maxversion, mask, boostecl != 0)
			# Print grid of modules
			print(qr.get_version())
			for y in range(qr.get_size()):
				for x in range(qr.get_size()):
					print(1 if qr.get_module(x, y) else 0)
			
		except ValueError as e:
			if e.args[0] != "Data too long":
				raise
			print(-1)
		sys.stdout.flush()


ECC_LEVELS = (
	qrcodegen.QrCode.Ecc.LOW,
	qrcodegen.QrCode.Ecc.MEDIUM,
	qrcodegen.QrCode.Ecc.QUARTILE,
	qrcodegen.QrCode.Ecc.HIGH,
)


if __name__ == "__main__":
	main()