#!/usr/bin/env python3

from random import randint as R


def _get_n_unique_points(n, lower=0, upper=10 ** 4 - 1):
    points = []
    point_set = set()
    while len(point_set) < n:
        p = R(lower, upper)
        if p not in point_set:
            points.append(p)
            point_set.add(p)
    return points


def to_str(lst):
    return " ".join(str(e) for e in lst)


def gen_random_unique():
    return to_str(_get_n_unique_points(8))


def gen_random_same_start():
    ksx, ksy, kex, key, oex, oey = _get_n_unique_points(6)
    points = [ksx, ksy, ksx, ksy, kex, key, oex, oey]
    return to_str(points)


def gen_random_same_end():
    ksx, ksy, osx, osy, kex, key = _get_n_unique_points(6)
    points = [ksx, ksy, osx, osy, kex, key, kex, key]
    return to_str(points)


def gen_random_start_is_end1():
    ksx, ksy, osx, osy, oex, oey = _get_n_unique_points(6)
    points = [ksx, ksy, osx, osy, osx, osy, oex, oey]
    return to_str(points)


def gen_random_start_is_end2():
    ksx, ksy, kex, key = _get_n_unique_points(4)
    points = [ksx, ksy, kex, key, kex, key, ksx, ksy]
    return to_str(points)


def gen_random_same():
    ksx, ksy, kex, key = _get_n_unique_points(4)
    points = [ksx, ksy, kex, key, ksx, ksy, kex, key]
    return to_str(points)


if __name__ == "__main__":
    from sys import argv

    if len(argv) < 2:
        exit("Usage: generator N (which results in N*6 files written)")
    N = int(argv[1])
    for i in range(N):
        with open(f"{(6*i+1):03}.in", "w") as fh:
            fh.write(gen_random_unique() + "\n")
        with open(f"{(6*i+2):03}.in", "w") as fh:
            fh.write(gen_random_same_start() + "\n")
        with open(f"{(6*i+3):03}.in", "w") as fh:
            fh.write(gen_random_same_end() + "\n")
        with open(f"{(6*i+4):03}.in", "w") as fh:
            fh.write(gen_random_start_is_end1() + "\n")
        with open(f"{(6*i+5):03}.in", "w") as fh:
            fh.write(gen_random_start_is_end1() + "\n")
        with open(f"{(6*i+6):03}.in", "w") as fh:
            fh.write(gen_random_same() + "\n")
