def METHOD_NAME(self, players):
    def get_horizontal_wins(board):
        horizontal_sum = 0
        for row in range(0, 6):
            for column in range(0, 4):
                horizontal_sum = (
                    board[row][column]
                    + board[row][column + 1]
                    + board[row][column + 2]
                    + board[row][column + 3]
                )
                if horizontal_sum == -4:
                    return -1
                elif horizontal_sum == 4:
                    return 1
        return 0
    def get_vertical_wins(board):
        vertical_sum = 0
        for row in range(0, 3):
            for column in range(0, 7):
                vertical_sum = (
                    board[row][column]
                    + board[row + 1][column]
                    + board[row + 2][column]
                    + board[row + 3][column]
                )
                if vertical_sum == -4:
                    return -1
                elif vertical_sum == 4:
                    return 1
        return 0
    def get_diagonal_wins(board):
        major_diagonal_sum = 0
        minor_diagonal_sum = 0
        # Major Diagonl Sum
        for row in range(0, 3):
            for column in range(0, 4):
                major_diagonal_sum = (
                    board[row][column]
                    + board[row + 1][column + 1]
                    + board[row + 2][column + 2]
                    + board[row + 3][column + 3]
                )
                if major_diagonal_sum == -4:
                    return -1
                elif major_diagonal_sum == 4:
                    return 1
        # Minor Diagonal Sum
        for row in range(3, 6):
            for column in range(0, 4):
                minor_diagonal_sum = (
                    board[row][column]
                    + board[row - 1][column + 1]
                    + board[row - 2][column + 2]
                    + board[row - 3][column + 3]
                )
                if minor_diagonal_sum == -4:
                    return -1
                elif minor_diagonal_sum == 4:
                    return 1
        return 0
    first_player, second_player = players[0], players[1]
    # If all tokens in top row are filled (its a draw), product != 0
    top_row_multiple = reduce(lambda x, y: x * y, self.current_board[0])
    if top_row_multiple != 0:
        return "draw"
    winner = (
        get_horizontal_wins(self.current_board)
        + get_vertical_wins(self.current_board)
        + get_diagonal_wins(self.current_board)
    )
    if winner == 1:
        return first_player
    elif winner == -1:
        return second_player
    return ""