def build_skip_grams(corpus, window_size):
    """Build skip grams with given window size

    Args:
        corpus (list[list[str]]): corpus including word tokens
        window_size (int): window size

    Returns:
        (list[tuple[int, int]]): skip grams
    """
    skip_grams = []

    for tokens in corpus:
        for i, center in enumerate(tokens):
            left = max(0, i - window_size)
            right = min(i + window_size, len(tokens))
            for j in range(left, right):
                if j != i:
                    skip_grams.append((center, tokens[j]))

    return skip_grams