def find_tables(lines):
    """
    For a list of lines, splits lines into blocks (stored in lists
    of lines within two lists) representing tables or non tables. Also
    return if a file starts with a table or a non-table (mostly
    non-tables, but functionality is included for robustness).
    """
    in_table = False
    tables = []
    non_tables = []
    current_table = []
    current_non_table = []
    text_first = None
    for i, line in enumerate(lines):
        if line.startswith('+') and line.strip().endswith('+') and not in_table:
            in_table = True
            if len(current_non_table) != 0:
                non_tables.append(current_non_table)
                current_non_table = []
            current_table.append(line)
            if text_first is None:
                text_first = False
        elif in_table and (line.startswith('+') or line.startswith('|')):
            current_table.append(line)
        elif in_table:
            in_table = False
            tables.append(current_table)
            current_table = []
            current_non_table.append(line)
        else:
            if text_first is None:
                text_first = True
            current_non_table.append(line)
    if len(current_non_table) != 0:
        non_tables.append(current_non_table)
    if len(current_table) != 0:
        tables.append(current_table)
    return tables, non_tables, text_first