import typing as tp


# --- GENERATED SECTION ---

# # [Generating code]
# MAX_ARGS = 16

# types = lambda prefix, n: ', '.join(f'_{prefix}{idx}' for idx in range(n))
# opt_types = lambda n: ', '.join(f'tp.Optional[_G{idx}]' for idx in range(n))
# with_fill_value_types = lambda n: ', '.join(f'_G{idx}|_FV' for idx in range(n))
# with_fill_values_types = lambda n: ', '.join(f'_G{idx}|_H{idx}' for idx in range(n))
# type_var_template = lambda prefix, idx: f'''_{prefix}{idx} = tp.TypeVar('_{prefix}{idx}')'''
# it_args = lambda n: ', '.join(f'it{idx}: tp.Iterable[_G{idx}]' for idx in range(n))
# tupled_its_template = lambda name, n, other_args, res_types: f'''@tp.overload\ndef {name}({it_args(n)}{other_args}) -> tp.Iterator[tp.Tuple[{res_types}]]: ...'''
# zip_same_size_template = lambda n: tupled_its_template('zip_same_size', n, '', types('G', n))
# zip_shortest_template = lambda n: tupled_its_template('zip_shortest', n, '', types('G', n))
# zip_longest_none_template = lambda n: tupled_its_template('zip_longest', n, ', *, fill_value: tp.Literal[None] = None', opt_types(n))
# zip_longest_fv_template = lambda n: tupled_its_template('zip_longest', n, ', *, fill_value: _FV', with_fill_value_types(n))
# zip_longest_fvs_template = lambda n: tupled_its_template('zip_longest', n, f', *, fill_values: tp.Tuple[{types('H', n)}]', with_fill_values_types(n))


# print('\n'.join((
#     '# START >>',
#     '\n# --- Type Vars ---',
#     "_FV = tp.TypeVar('_FV')",
#     *(type_var_template('G', x) for x in range(MAX_ARGS + 1)),
#     *(type_var_template('H', x) for x in range(MAX_ARGS + 1)),
#     '\n# --- zip_shortest ---',
#     *(zip_shortest_template(x) for x in range(2, MAX_ARGS + 1)),
#     '\n# --- zip_same_size ---',
#     *(zip_same_size_template(x) for x in range(2, MAX_ARGS + 1)),
#     '\n# --- zip_longest ---',
#     *(zip_longest_none_template(x) for x in range(2, MAX_ARGS + 1)),
#     *(zip_longest_fv_template(x) for x in range(2, MAX_ARGS + 1)),
#     *(zip_longest_fvs_template(x) for x in range(2, MAX_ARGS + 1)),
#     '\n# << END',
# )))
# # [/Generating code]


# START >>

# --- Type Vars ---
_FV = tp.TypeVar('_FV')
_G0 = tp.TypeVar('_G0')
_G1 = tp.TypeVar('_G1')
_G2 = tp.TypeVar('_G2')
_G3 = tp.TypeVar('_G3')
_G4 = tp.TypeVar('_G4')
_G5 = tp.TypeVar('_G5')
_G6 = tp.TypeVar('_G6')
_G7 = tp.TypeVar('_G7')
_G8 = tp.TypeVar('_G8')
_G9 = tp.TypeVar('_G9')
_G10 = tp.TypeVar('_G10')
_G11 = tp.TypeVar('_G11')
_G12 = tp.TypeVar('_G12')
_G13 = tp.TypeVar('_G13')
_G14 = tp.TypeVar('_G14')
_G15 = tp.TypeVar('_G15')
_G16 = tp.TypeVar('_G16')
_H0 = tp.TypeVar('_H0')
_H1 = tp.TypeVar('_H1')
_H2 = tp.TypeVar('_H2')
_H3 = tp.TypeVar('_H3')
_H4 = tp.TypeVar('_H4')
_H5 = tp.TypeVar('_H5')
_H6 = tp.TypeVar('_H6')
_H7 = tp.TypeVar('_H7')
_H8 = tp.TypeVar('_H8')
_H9 = tp.TypeVar('_H9')
_H10 = tp.TypeVar('_H10')
_H11 = tp.TypeVar('_H11')
_H12 = tp.TypeVar('_H12')
_H13 = tp.TypeVar('_H13')
_H14 = tp.TypeVar('_H14')
_H15 = tp.TypeVar('_H15')
_H16 = tp.TypeVar('_H16')

# --- zip_shortest ---
@tp.overload
def zip_shortest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1]) -> tp.Iterator[tp.Tuple[_G0, _G1]]: ...
@tp.overload
def zip_shortest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2]]: ...
@tp.overload
def zip_shortest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3]]: ...
@tp.overload
def zip_shortest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4]]: ...
@tp.overload
def zip_shortest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5]]: ...
@tp.overload
def zip_shortest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6]]: ...
@tp.overload
def zip_shortest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6, _G7]]: ...
@tp.overload
def zip_shortest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6, _G7, _G8]]: ...
@tp.overload
def zip_shortest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6, _G7, _G8, _G9]]: ...
@tp.overload
def zip_shortest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6, _G7, _G8, _G9, _G10]]: ...
@tp.overload
def zip_shortest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6, _G7, _G8, _G9, _G10, _G11]]: ...
@tp.overload
def zip_shortest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6, _G7, _G8, _G9, _G10, _G11, _G12]]: ...
@tp.overload
def zip_shortest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12], it13: tp.Iterable[_G13]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6, _G7, _G8, _G9, _G10, _G11, _G12, _G13]]: ...
@tp.overload
def zip_shortest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12], it13: tp.Iterable[_G13], it14: tp.Iterable[_G14]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6, _G7, _G8, _G9, _G10, _G11, _G12, _G13, _G14]]: ...
@tp.overload
def zip_shortest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12], it13: tp.Iterable[_G13], it14: tp.Iterable[_G14], it15: tp.Iterable[_G15]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6, _G7, _G8, _G9, _G10, _G11, _G12, _G13, _G14, _G15]]: ...

# --- zip_same_size ---
@tp.overload
def zip_same_size(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1]) -> tp.Iterator[tp.Tuple[_G0, _G1]]: ...
@tp.overload
def zip_same_size(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2]]: ...
@tp.overload
def zip_same_size(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3]]: ...
@tp.overload
def zip_same_size(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4]]: ...
@tp.overload
def zip_same_size(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5]]: ...
@tp.overload
def zip_same_size(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6]]: ...
@tp.overload
def zip_same_size(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6, _G7]]: ...
@tp.overload
def zip_same_size(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6, _G7, _G8]]: ...
@tp.overload
def zip_same_size(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6, _G7, _G8, _G9]]: ...
@tp.overload
def zip_same_size(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6, _G7, _G8, _G9, _G10]]: ...
@tp.overload
def zip_same_size(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6, _G7, _G8, _G9, _G10, _G11]]: ...
@tp.overload
def zip_same_size(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6, _G7, _G8, _G9, _G10, _G11, _G12]]: ...
@tp.overload
def zip_same_size(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12], it13: tp.Iterable[_G13]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6, _G7, _G8, _G9, _G10, _G11, _G12, _G13]]: ...
@tp.overload
def zip_same_size(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12], it13: tp.Iterable[_G13], it14: tp.Iterable[_G14]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6, _G7, _G8, _G9, _G10, _G11, _G12, _G13, _G14]]: ...
@tp.overload
def zip_same_size(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12], it13: tp.Iterable[_G13], it14: tp.Iterable[_G14], it15: tp.Iterable[_G15]) -> tp.Iterator[tp.Tuple[_G0, _G1, _G2, _G3, _G4, _G5, _G6, _G7, _G8, _G9, _G10, _G11, _G12, _G13, _G14, _G15]]: ...

# --- zip_longest ---
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], *, fill_value: tp.Literal[None] = None) -> tp.Iterator[tp.Tuple[tp.Optional[_G0], tp.Optional[_G1]]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], *, fill_value: tp.Literal[None] = None) -> tp.Iterator[tp.Tuple[tp.Optional[_G0], tp.Optional[_G1], tp.Optional[_G2]]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], *, fill_value: tp.Literal[None] = None) -> tp.Iterator[tp.Tuple[tp.Optional[_G0], tp.Optional[_G1], tp.Optional[_G2], tp.Optional[_G3]]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], *, fill_value: tp.Literal[None] = None) -> tp.Iterator[tp.Tuple[tp.Optional[_G0], tp.Optional[_G1], tp.Optional[_G2], tp.Optional[_G3], tp.Optional[_G4]]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], *, fill_value: tp.Literal[None] = None) -> tp.Iterator[tp.Tuple[tp.Optional[_G0], tp.Optional[_G1], tp.Optional[_G2], tp.Optional[_G3], tp.Optional[_G4], tp.Optional[_G5]]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], *, fill_value: tp.Literal[None] = None) -> tp.Iterator[tp.Tuple[tp.Optional[_G0], tp.Optional[_G1], tp.Optional[_G2], tp.Optional[_G3], tp.Optional[_G4], tp.Optional[_G5], tp.Optional[_G6]]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], *, fill_value: tp.Literal[None] = None) -> tp.Iterator[tp.Tuple[tp.Optional[_G0], tp.Optional[_G1], tp.Optional[_G2], tp.Optional[_G3], tp.Optional[_G4], tp.Optional[_G5], tp.Optional[_G6], tp.Optional[_G7]]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], *, fill_value: tp.Literal[None] = None) -> tp.Iterator[tp.Tuple[tp.Optional[_G0], tp.Optional[_G1], tp.Optional[_G2], tp.Optional[_G3], tp.Optional[_G4], tp.Optional[_G5], tp.Optional[_G6], tp.Optional[_G7], tp.Optional[_G8]]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], *, fill_value: tp.Literal[None] = None) -> tp.Iterator[tp.Tuple[tp.Optional[_G0], tp.Optional[_G1], tp.Optional[_G2], tp.Optional[_G3], tp.Optional[_G4], tp.Optional[_G5], tp.Optional[_G6], tp.Optional[_G7], tp.Optional[_G8], tp.Optional[_G9]]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], *, fill_value: tp.Literal[None] = None) -> tp.Iterator[tp.Tuple[tp.Optional[_G0], tp.Optional[_G1], tp.Optional[_G2], tp.Optional[_G3], tp.Optional[_G4], tp.Optional[_G5], tp.Optional[_G6], tp.Optional[_G7], tp.Optional[_G8], tp.Optional[_G9], tp.Optional[_G10]]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], *, fill_value: tp.Literal[None] = None) -> tp.Iterator[tp.Tuple[tp.Optional[_G0], tp.Optional[_G1], tp.Optional[_G2], tp.Optional[_G3], tp.Optional[_G4], tp.Optional[_G5], tp.Optional[_G6], tp.Optional[_G7], tp.Optional[_G8], tp.Optional[_G9], tp.Optional[_G10], tp.Optional[_G11]]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12], *, fill_value: tp.Literal[None] = None) -> tp.Iterator[tp.Tuple[tp.Optional[_G0], tp.Optional[_G1], tp.Optional[_G2], tp.Optional[_G3], tp.Optional[_G4], tp.Optional[_G5], tp.Optional[_G6], tp.Optional[_G7], tp.Optional[_G8], tp.Optional[_G9], tp.Optional[_G10], tp.Optional[_G11], tp.Optional[_G12]]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12], it13: tp.Iterable[_G13], *, fill_value: tp.Literal[None] = None) -> tp.Iterator[tp.Tuple[tp.Optional[_G0], tp.Optional[_G1], tp.Optional[_G2], tp.Optional[_G3], tp.Optional[_G4], tp.Optional[_G5], tp.Optional[_G6], tp.Optional[_G7], tp.Optional[_G8], tp.Optional[_G9], tp.Optional[_G10], tp.Optional[_G11], tp.Optional[_G12], tp.Optional[_G13]]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12], it13: tp.Iterable[_G13], it14: tp.Iterable[_G14], *, fill_value: tp.Literal[None] = None) -> tp.Iterator[tp.Tuple[tp.Optional[_G0], tp.Optional[_G1], tp.Optional[_G2], tp.Optional[_G3], tp.Optional[_G4], tp.Optional[_G5], tp.Optional[_G6], tp.Optional[_G7], tp.Optional[_G8], tp.Optional[_G9], tp.Optional[_G10], tp.Optional[_G11], tp.Optional[_G12], tp.Optional[_G13], tp.Optional[_G14]]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12], it13: tp.Iterable[_G13], it14: tp.Iterable[_G14], it15: tp.Iterable[_G15], *, fill_value: tp.Literal[None] = None) -> tp.Iterator[tp.Tuple[tp.Optional[_G0], tp.Optional[_G1], tp.Optional[_G2], tp.Optional[_G3], tp.Optional[_G4], tp.Optional[_G5], tp.Optional[_G6], tp.Optional[_G7], tp.Optional[_G8], tp.Optional[_G9], tp.Optional[_G10], tp.Optional[_G11], tp.Optional[_G12], tp.Optional[_G13], tp.Optional[_G14], tp.Optional[_G15]]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], *, fill_value: _FV) -> tp.Iterator[tp.Tuple[_G0|_FV, _G1|_FV]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], *, fill_value: _FV) -> tp.Iterator[tp.Tuple[_G0|_FV, _G1|_FV, _G2|_FV]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], *, fill_value: _FV) -> tp.Iterator[tp.Tuple[_G0|_FV, _G1|_FV, _G2|_FV, _G3|_FV]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], *, fill_value: _FV) -> tp.Iterator[tp.Tuple[_G0|_FV, _G1|_FV, _G2|_FV, _G3|_FV, _G4|_FV]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], *, fill_value: _FV) -> tp.Iterator[tp.Tuple[_G0|_FV, _G1|_FV, _G2|_FV, _G3|_FV, _G4|_FV, _G5|_FV]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], *, fill_value: _FV) -> tp.Iterator[tp.Tuple[_G0|_FV, _G1|_FV, _G2|_FV, _G3|_FV, _G4|_FV, _G5|_FV, _G6|_FV]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], *, fill_value: _FV) -> tp.Iterator[tp.Tuple[_G0|_FV, _G1|_FV, _G2|_FV, _G3|_FV, _G4|_FV, _G5|_FV, _G6|_FV, _G7|_FV]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], *, fill_value: _FV) -> tp.Iterator[tp.Tuple[_G0|_FV, _G1|_FV, _G2|_FV, _G3|_FV, _G4|_FV, _G5|_FV, _G6|_FV, _G7|_FV, _G8|_FV]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], *, fill_value: _FV) -> tp.Iterator[tp.Tuple[_G0|_FV, _G1|_FV, _G2|_FV, _G3|_FV, _G4|_FV, _G5|_FV, _G6|_FV, _G7|_FV, _G8|_FV, _G9|_FV]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], *, fill_value: _FV) -> tp.Iterator[tp.Tuple[_G0|_FV, _G1|_FV, _G2|_FV, _G3|_FV, _G4|_FV, _G5|_FV, _G6|_FV, _G7|_FV, _G8|_FV, _G9|_FV, _G10|_FV]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], *, fill_value: _FV) -> tp.Iterator[tp.Tuple[_G0|_FV, _G1|_FV, _G2|_FV, _G3|_FV, _G4|_FV, _G5|_FV, _G6|_FV, _G7|_FV, _G8|_FV, _G9|_FV, _G10|_FV, _G11|_FV]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12], *, fill_value: _FV) -> tp.Iterator[tp.Tuple[_G0|_FV, _G1|_FV, _G2|_FV, _G3|_FV, _G4|_FV, _G5|_FV, _G6|_FV, _G7|_FV, _G8|_FV, _G9|_FV, _G10|_FV, _G11|_FV, _G12|_FV]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12], it13: tp.Iterable[_G13], *, fill_value: _FV) -> tp.Iterator[tp.Tuple[_G0|_FV, _G1|_FV, _G2|_FV, _G3|_FV, _G4|_FV, _G5|_FV, _G6|_FV, _G7|_FV, _G8|_FV, _G9|_FV, _G10|_FV, _G11|_FV, _G12|_FV, _G13|_FV]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12], it13: tp.Iterable[_G13], it14: tp.Iterable[_G14], *, fill_value: _FV) -> tp.Iterator[tp.Tuple[_G0|_FV, _G1|_FV, _G2|_FV, _G3|_FV, _G4|_FV, _G5|_FV, _G6|_FV, _G7|_FV, _G8|_FV, _G9|_FV, _G10|_FV, _G11|_FV, _G12|_FV, _G13|_FV, _G14|_FV]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12], it13: tp.Iterable[_G13], it14: tp.Iterable[_G14], it15: tp.Iterable[_G15], *, fill_value: _FV) -> tp.Iterator[tp.Tuple[_G0|_FV, _G1|_FV, _G2|_FV, _G3|_FV, _G4|_FV, _G5|_FV, _G6|_FV, _G7|_FV, _G8|_FV, _G9|_FV, _G10|_FV, _G11|_FV, _G12|_FV, _G13|_FV, _G14|_FV, _G15|_FV]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], *, fill_values: tp.Tuple[_H0, _H1]) -> tp.Iterator[tp.Tuple[_G0|_H0, _G1|_H1]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], *, fill_values: tp.Tuple[_H0, _H1, _H2]) -> tp.Iterator[tp.Tuple[_G0|_H0, _G1|_H1, _G2|_H2]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], *, fill_values: tp.Tuple[_H0, _H1, _H2, _H3]) -> tp.Iterator[tp.Tuple[_G0|_H0, _G1|_H1, _G2|_H2, _G3|_H3]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], *, fill_values: tp.Tuple[_H0, _H1, _H2, _H3, _H4]) -> tp.Iterator[tp.Tuple[_G0|_H0, _G1|_H1, _G2|_H2, _G3|_H3, _G4|_H4]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], *, fill_values: tp.Tuple[_H0, _H1, _H2, _H3, _H4, _H5]) -> tp.Iterator[tp.Tuple[_G0|_H0, _G1|_H1, _G2|_H2, _G3|_H3, _G4|_H4, _G5|_H5]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], *, fill_values: tp.Tuple[_H0, _H1, _H2, _H3, _H4, _H5, _H6]) -> tp.Iterator[tp.Tuple[_G0|_H0, _G1|_H1, _G2|_H2, _G3|_H3, _G4|_H4, _G5|_H5, _G6|_H6]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], *, fill_values: tp.Tuple[_H0, _H1, _H2, _H3, _H4, _H5, _H6, _H7]) -> tp.Iterator[tp.Tuple[_G0|_H0, _G1|_H1, _G2|_H2, _G3|_H3, _G4|_H4, _G5|_H5, _G6|_H6, _G7|_H7]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], *, fill_values: tp.Tuple[_H0, _H1, _H2, _H3, _H4, _H5, _H6, _H7, _H8]) -> tp.Iterator[tp.Tuple[_G0|_H0, _G1|_H1, _G2|_H2, _G3|_H3, _G4|_H4, _G5|_H5, _G6|_H6, _G7|_H7, _G8|_H8]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], *, fill_values: tp.Tuple[_H0, _H1, _H2, _H3, _H4, _H5, _H6, _H7, _H8, _H9]) -> tp.Iterator[tp.Tuple[_G0|_H0, _G1|_H1, _G2|_H2, _G3|_H3, _G4|_H4, _G5|_H5, _G6|_H6, _G7|_H7, _G8|_H8, _G9|_H9]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], *, fill_values: tp.Tuple[_H0, _H1, _H2, _H3, _H4, _H5, _H6, _H7, _H8, _H9, _H10]) -> tp.Iterator[tp.Tuple[_G0|_H0, _G1|_H1, _G2|_H2, _G3|_H3, _G4|_H4, _G5|_H5, _G6|_H6, _G7|_H7, _G8|_H8, _G9|_H9, _G10|_H10]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], *, fill_values: tp.Tuple[_H0, _H1, _H2, _H3, _H4, _H5, _H6, _H7, _H8, _H9, _H10, _H11]) -> tp.Iterator[tp.Tuple[_G0|_H0, _G1|_H1, _G2|_H2, _G3|_H3, _G4|_H4, _G5|_H5, _G6|_H6, _G7|_H7, _G8|_H8, _G9|_H9, _G10|_H10, _G11|_H11]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12], *, fill_values: tp.Tuple[_H0, _H1, _H2, _H3, _H4, _H5, _H6, _H7, _H8, _H9, _H10, _H11, _H12]) -> tp.Iterator[tp.Tuple[_G0|_H0, _G1|_H1, _G2|_H2, _G3|_H3, _G4|_H4, _G5|_H5, _G6|_H6, _G7|_H7, _G8|_H8, _G9|_H9, _G10|_H10, _G11|_H11, _G12|_H12]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12], it13: tp.Iterable[_G13], *, fill_values: tp.Tuple[_H0, _H1, _H2, _H3, _H4, _H5, _H6, _H7, _H8, _H9, _H10, _H11, _H12, _H13]) -> tp.Iterator[tp.Tuple[_G0|_H0, _G1|_H1, _G2|_H2, _G3|_H3, _G4|_H4, _G5|_H5, _G6|_H6, _G7|_H7, _G8|_H8, _G9|_H9, _G10|_H10, _G11|_H11, _G12|_H12, _G13|_H13]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12], it13: tp.Iterable[_G13], it14: tp.Iterable[_G14], *, fill_values: tp.Tuple[_H0, _H1, _H2, _H3, _H4, _H5, _H6, _H7, _H8, _H9, _H10, _H11, _H12, _H13, _H14]) -> tp.Iterator[tp.Tuple[_G0|_H0, _G1|_H1, _G2|_H2, _G3|_H3, _G4|_H4, _G5|_H5, _G6|_H6, _G7|_H7, _G8|_H8, _G9|_H9, _G10|_H10, _G11|_H11, _G12|_H12, _G13|_H13, _G14|_H14]]: ...
@tp.overload
def zip_longest(it0: tp.Iterable[_G0], it1: tp.Iterable[_G1], it2: tp.Iterable[_G2], it3: tp.Iterable[_G3], it4: tp.Iterable[_G4], it5: tp.Iterable[_G5], it6: tp.Iterable[_G6], it7: tp.Iterable[_G7], it8: tp.Iterable[_G8], it9: tp.Iterable[_G9], it10: tp.Iterable[_G10], it11: tp.Iterable[_G11], it12: tp.Iterable[_G12], it13: tp.Iterable[_G13], it14: tp.Iterable[_G14], it15: tp.Iterable[_G15], *, fill_values: tp.Tuple[_H0, _H1, _H2, _H3, _H4, _H5, _H6, _H7, _H8, _H9, _H10, _H11, _H12, _H13, _H14, _H15]) -> tp.Iterator[tp.Tuple[_G0|_H0, _G1|_H1, _G2|_H2, _G3|_H3, _G4|_H4, _G5|_H5, _G6|_H6, _G7|_H7, _G8|_H8, _G9|_H9, _G10|_H10, _G11|_H11, _G12|_H12, _G13|_H13, _G14|_H14, _G15|_H15]]: ...

# << END
