Hereditary biclique-Helly graphs: recognition and maximal biclique enumeration A biclique is a set of vertices that induce a bipartite complete graph. A graph G is biclique-Helly when its family of maximal bicliques satisfies the Helly property. If every induced subgraph of G is also biclique-Helly, then G is hereditary biclique-Helly. A graph is C 4 -dominated when every cycle of length 4 contains a vertex that is dominated by the vertex of the cycle that is not adjacent to it. In this paper we show that the class of hereditary biclique-Helly graphs is formed precisely by those C 4 -dominated graphs that contain no triangles and no induced cycles of length either 5, or 6. Using this characterization, we develop an algorithm for recognizing hereditary biclique-Helly graphs in O(n 2 + αm) time and O(m) space. (Here n, m, and α = O(m 1/2 ) are the number of vertices and edges, and the arboricity of the graph, respectively.) As a subprocedure, we show how to recognize those C 4 -dominated graphs that contain no triangles in O(αm) time and O(m) space. Finally, we show how to enumerate all the maximal bicliques of a C 4 -dominated graph with no triangles in O(n 2 + αm) time and O(αm) space, and we discuss how some biclique problems can be solved in O(αm) time and O(n + m) space. A famous theorem by Helly states that, in a d-dimensional euclidean space, if in a finite collection of n > d convex sets any d + 1 sets have a point in common, then there is a point in common to all the sets [19] . The Helly property generalizes this theorem for families of sets of any kind. A family of sets satisfies the Helly property, or simply is a Helly family, if for every subfamily F of pairwise intersecting sets there is an element common to all the sets in F.. The Helly property arises naturally in the graph theory field [4, 11, 24] . In the study of clique graphs, the Helly property plays a central role. Roberts and Spencer proved that a graph is a clique graph if and only if there is a Helly family of cliques that covers all the edges of the graph [30] (see also [18] ). Based on this result, it is interesting to study the subclass of clique graphs in which the family of maximal cliques is Helly. Such is the class of clique-Helly graphs. Szwarcfiter presented a characterization of clique-Helly graphs that yields a polynomial time algorithm for the associated recognition problem [31] , while Lin and Szwarcfiter recently developed an O(m 2 ) time recognition algorithm [22] . On the other hand, Alcón et al. showed that the recognition of clique graphs is an NP-complete problem [1] . The Helly property has been applied in a similar fashion to other families of vertex sets so as to define several other classes of graphs. A survey on the Helly property for graphs, mainly from a complexity point of view, is given in [8] .. A clique-Helly graph can be obtained from any given graph, by inserting a new vertex adjacent to all the existing vertices. As a consequence, the class of clique-Helly graphs is not closed under induced subgraphs. It makes sense to study those graphs whose all their induced subgraphs are clique-Helly. These graphs are known as the hereditary clique-Helly graphs. Prisner gave a characterization of hereditary clique-Helly graphs by means of four forbidden induced subgraphs with 6 vertices each. He also showed an O(n 2 m) time algorithm for the associated recognition problem [28] . Later, Lin and Szwarcfiter developed an improved O(m 2 ) time and O(αm) space recognition algorithm [22] , where α < √ m is the arboricity of the graph.. The problem of enumerating all the maximal cliques of a graph is widely studied, both for the general case (e.g. [5, 20, 34, 33] ) and for some restricted graph classes (see e.g. [4, 11] ). Since a clique-Helly graph can be obtained from any graph by inserting a universal vertex, any algorithm for the enumeration of the maximal cliques of a clique-Helly graph can also be used to enumerate all the maximal cliques of a general graph. That is, the best algorithms for enumerating the maximal cliques of clique-Helly graphs are of general purpose. For hereditary clique-Helly graphs the situation is quite different, since clique-Helly graphs have at most m maximal cliques [28] . This O(m) bound follows from the fact that all the maximal cliques of a hereditary clique-Helly graph must have an edge that belongs to no other maximal clique [28, 35] . So, using the same ideas as in [22] , an O(m 2 ) time algorithm for enumerating all the maximal cliques yields from this property.. In this paper we focus our attention on bicliques. A biclique is a set of vertices inducing a bipartite complete subgraph. The problem of enumerating all the (non-induced) maximal bicliques of a general graph is also widely studied (e.g. [2, 3, 6, 7, 10] ), as well as it is the problem of generating the maximal bicliques of a bipartite graph [23, 26] . In the last years, other concepts that are widely studied for cliques have been studied in terms of bicliques [12, 13, 14, 16, 15, 17, 25, 32] . Groshaus and Szwarcfiter found a characterization of biclique graphs that somehow resembles the characterization of clique graphs by Roberts and Spencer [17] ; in this case, a key ingredient of the characterization is a variation of the Helly property, which the authors call the bipartite Helly property. Groshaus and Szwarcfiter also provided a characterization of biclique-Helly graphs, that is somehow related to the characterization given by Szwarcfiter for clique-Helly graphs, that also leads to a polynomial time algorithm for the associated recognition problem [15] .. As clique-Helly graphs, the induced subgraph of a biclique-Helly graph needs not be a biclique-Helly graph. Indeed, by inserting a vertex adjacent to all the vertices in one bipartition of a bipartite graph, a biclique-Helly graph is obtained. A graph is hereditary biclique-Helly graphs if all its induced subgraphs are biclique-Helly. Groshaus and Szwarcfiter also studied the class of hereditary biclique-Helly graphs [16] . They showed a family of six forbidden induced subgraphs with at most 8 vertices. As a corollary, the recognition of hereditary biclique-Helly graphs takes polynomial time, though the most efficient algorithm to this date takes O(n 3 m 2 ) time (cf. [8] ).. Prisner proved that bipartite graphs can have an exponential number of bicliques [29] . Since a biclique-Helly graph can be obtained from any bipartite graph by the insertion of one vertex, biclique-Helly graphs can have an exponential number of maximal bicliques. Furthermore, as for clique-Helly graphs, the best algorithms for listing all the maximal bicliques of a biclique-Helly graph are of general purpose.. In this paper, we consider two problems related with hereditary biclique-Helly graphs: their recognition and the enumeration of their maximal bicliques. For the recognition problem, we rephrase the characterization by Groshaus and Szwarcfiter in more algorithmic terms and, using this new characterization, we develop an O(αm + n 2 ) time and O(m) space recognition algorithm. As one of the steps in our algorithm, we require the recognition of a larger class, formed by all the triangle-free graphs whose C 4 's have at least one vertex dominated by other vertex of the cycle. We call this class, the class of C 4 -dominated graphs with no triangles. We develop a recognition algorithm for this class that takes O(αm) time and O(m) space. For the enumeration problem, we develop an O(αm + o) time and space algorithm that outputs all the bicliques of any triangle-free C 4 -dominated graph, where o < n 2 is the size of the output. Furthermore, we prove that every maximal biclique of a graph in this class is formed by those vertices that either are adjacent or dominate v, for some vertex v. As a result, hereditary biclique-Helly graphs can have at most n maximal bicliques.. The article is organized as follows. In the next section we introduce the notation and terminology employed. In Section 3 we develop a simple O(nm) time and O(n 2 ) space algorithm for the recognition of biclique-Helly graphs. Following, in Sections 4 and 5, we present an improved implementation of this simple algorithm, so that it runs in O(αm + n 2 ) time and O(m) space. The algorithm for enumerating the maximal bicliques of C 4 -dominated graph with no triangles is given in Section 6. Finally, in Section 7, we give some remarks and leave some open problems.

B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O B I I O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O


Single-Source Dilation-Bounded Minimum Spanning Trees Given a set S of points in the plane, a geometric network for S is a graph G with vertex set S and straight edges. We consider a broadcasting situation, where one point r ∈ S is a designated source. Given a dilation factor δ, we ask for a geometric network G such that for every point v ∈ S there is a path from r to v in G of length at most δ|rv|, and such that the total edge length is minimized. We show that finding such a network of minimum total edge length is NP-hard, and give an approximation algorithm. Given a set S of points in the plane, a geometric network for S is an edge-weighted graph G with vertex set S and straight edges. The weight of an edge (u, v) is the length of the segment uv, that is, the Euclidean distance |uv| of the two points.. Various types of networks, such as communication networks, road networks, or telephone networks, have been modeled as geometric networks. One important parameter of a geometric network is its total cost (G): the sum of all edge lengths. The network that minimizes the cost while connecting all points in S is the Euclidean minimum spanning tree of S. Another well-studied parameter is the dilation of a network. For two points u, v ∈ S, the dilation of the pair (u, v) is defined to be the ratio. of the length of the shortest path between u and v in G and the distance |uv|. The dilation of a network is commonly defined as the maximum of ∆ G (u, v) over all pairs u, v ∈ S. The network minimizing the dilation is the complete graph, which has dilation 1. The complete graph has prohibitively large cost, while the minimum spanning tree may have large dilation. Balancing these two parameters has been the subject of much research in the literature, we refer to the book by Narasimhan and Smid [4] for an overview.. In this paper, we consider a broadcasting situation, where one point r ∈ S is a designated source, and the purpose of the network is to broadcast information from r to all the other nodes. A node v receives the information with delay d G (r, v), and we are interested in the relative delay, which is the dilation ∆ G (r, v) = d G (r, v)/|rv|. We define the (relative) delay of G to be the maximum. |rv| .. Note that we can assume our network G to be a tree, as the shortest-path tree with source at r will have the same delay as G itself.. The network minimizing ∆(G) is the star consisting of all edges (r, v), for v ∈ S\{r}. It has ∆(G) = 1, but its cost (G) may be prohibitively large. The minimum spanning tree, which minimizes (G), may have large delay. In practice, a trade-off between both factors needs to be achieved. Related notions have been studied in the literature. For instance, computing the tree T that minimizes (T ) while bounding the distance of all nodes from the source in the graph is NP-complete [5] . Similarly, minimizing (T ) while keeping all nodes at most k hops from the source is NP-complete [1] .. Our problem, which we term the single-source dilation-bounded minimum spanning tree problem, takes as input the point set S, the designated source point r ∈ S, and a delay bound δ 1. We ask for a spanning tree T of smallest possible cost (T ) such that ∆(T ) δ, or, in other words, such that for every v ∈ S \ {r}, we have d T (r, v) δ|rv|.. When we set δ = 1, then the answer is simply the star connecting r with all other points. When we set δ n − 1, then the answer is the minimum spanning tree of S, and so our problem interpolates between these two networks.. We show that solving the problem exactly is NP-hard by reduction from Knapsack in Section 3. This leads us to consider an approximation algorithm. Since this algorithm is rather simple, we present it first in Section 2.

O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O B O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O B O O O O O O O O O O B I I O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Inferring microbial interaction network from microbiome data using RMN algorithm Background: Microbial interactions are ubiquitous in nature. Recently, many similarity-based approaches have been developed to study the interaction in microbial ecosystems. These approaches can only explain the non-directional interactions yet a more complete view on how microbes regulate each other remains elusive. In addition, the strength of microbial interactions is difficult to be quantified by only using correlation analysis. Results: In this study, a rule-based microbial network (RMN) algorithm, which integrates regulatory OTU-triplet model with parametric weighting function, is being developed to construct microbial regulatory networks. The RMN algorithm not only can extrapolate the cooperative and competitive relationships between microbes, but also can infer the direction of such interactions. In addition, RMN algorithm can theoretically characterize the regulatory relationship composed of microbial pairs with low correlation coefficient in microbial networks. Our results suggested that Bifidobacterium, Streptococcus, Clostridium XI, and Bacteroides are essential for causing abundance changes of Veillonella in gut microbiome. Furthermore, we inferred some possible microbial interactions, including the competitive relationship between Veillonella and Bacteroides, and the cooperative relationship between Veillonella and Clostridium XI. Conclusions: The RMN algorithm provides the reconstruction of gut microbe networks, and can shed light on the dynamical interactions of microbes in the infant intestinal tract. In this paper we presented RMN algorithm, a rule-based algorithm using the OTU-triplet model with parametric weighting function, to construct microbial regulatory networks. RMN algorithm can theoretically extract directional interactions to delineate the cooperative and competitive relationships between microbes from highthroughput sequencing time series data. The efficiency estimation shows the high performance of RMN algorithm on simulated data with three latent factors and different noise levels. We also applied our framework to identify new relationships in infant gut samples. RMN algorithm is both computationally feasible and capable of detecting biologically significant progresses embedded in a microbial community. Although simple pairwise relationship has been used to describe complex forms of microbial interactions, advanced techniques are still required to infer complex microbial networks. Recent studies show that the cooperative and competitive relationships between microbes coexist in complicated ecological communities [8, 22, 23] . In addition, triplet relation, like activatorrepressor-target pattern, has been adopted to construct gene regulatory network form time course gene expression data [24] . Basing on such a rationale, we developed RMN algorithm to describe the relationship among every triplet of microbe as the cooperator-competitortarget. RMN algorithm is used to search for triplet relations of OTUs where the abundances of the target Fig. 6 The reconstruction of microbial regulatory networks in infant intestinal tract. Here, the competitive and cooperatively relationships are defined as ┤and →, individually should be high while that for the cooperator is high and that for the competitor is low (conversely, the abundances of the target should be low while that for the cooperator is low and that for the competitor is high). Our evaluation results suggest RMN algorithm has high performance when subjected to simulated data with different levels of noise (see Figs. 4 and 5) . As presented in the results, our algorithm has characterized well-known and possible microbial interactions from time series microbiome data of infant gut samples (see Fig. 6 ).. In summary, networks reconstructed by using simple similarity-based method often fail to capture the complex topology of a real system, and such networks may be full of false positive links. Furthermore, biologically significant relationships are often difficult to be identified from such networks. Our RMN algorithm can produce low false positive links even for highly noisy data (see Fig. 5(a) ). Moreover, RMN algorithm is designed to explore complex networks consisted of non-linear, decentralized and directed interactions among microbes. However, having said all these, the drawback of RMN algorithm is that it may not be able to detect simple linear correlation between two OTUs. Another potential concern is that we tested our method using a simulated data with the Tanh functions, the circularity in the model construction and validation can cause bias on our results. Overall, RMN algorithm can theoretically predict microbial interactions from low correlation data (see Tables 1 and 2 ). Our method should be a promising starting step to identify novel microbial interactions that normally cannot be found by using similarity-based methods. Therefore, by integrating similarity-based methods and our RMN algorithm, one can potentially gain a more accurate picture of microbial interactions towards a better understanding of microbial dynamics. Microbes are the most abundant and diverse organisms on earth and their interactions are crucial in understanding both the ecology and the evolution of microorganisms. Microbial interactions, including mutualism, competition, parasitism and commensalism, are difficult to quantify as the underlying processes usually cannot be observed directly and are often too complex for laboratory experiments [1] . However, recent advances in high-throughput sequencing technology have made large scale surveys of microbial communities feasible. Metagenomic studies and network-based approaches have yield detailed information on the composition of microbial communities, which in turn pave the way to study the structure of microbial ecosystems and their dynamics [2] [3] [4] .. Elucidating competitive and cooperative relationship is a challenge in generating a microbial interaction network because of the direction of such interactions [5] . Competition and cooperation are the two most studied microbial interactions in the recent times with the former dominating the latter in various microbial communities [6] [7] [8] [9] . Recent studies have also shown that competitive interactions can drive the evolution of cooperation in microbial ecosystems [9] . Therefore, identifying competitive and cooperative relationships between microbes is profound importance; however, the directional nature of such interactions also poses as a difficult challenge in network construction.. There are several approaches in constructing a microbial network. One commonly used method is the similaritybased network construction where the co-occurrences of two species over multiple time-series samples are measured to infer their interaction [2, 3, [10] [11] [12] . In such networks, nodes correspond to organisms and an edge between two nodes represents the significant relationship of two taxa across a set of time series samples. Although other derived approaches [13] [14] [15] can identify the pairwise relationships between microbes by using correlation estimation, they do not identify the nature and the strength of these relationships [1] . In general, these methods cannot capture the complexity of microbial interactions and cannot elucidate how microbes regulate each other.. To model complex relationships (one species influencing multiple others), methods employing mathematical and statistical models have been developed recently. For example, the generalized Lotka-Volterra framework was used to model the dynamics of microbial populations in order to estimate parameters governing species-species interactions [16] [17] [18] . Moreover, other studies have used nonparametric regression models to infer the dynamic relationships between three microbial populations [19, 20] . These regression models use smooth functions to describe microbial relationships and estimate their relative effects. Because these regression analyses do not use a priori knowledge to build dynamic microbial interactions, the prediction from those models often lack biological explanations, especially when the microbial community under examination is a complex one [21] . Therefore, how to construct a meaningful microbial interaction network remains a challenge in microbial ecology.. Due to the importance of competitive and cooperative relationships between microbes in complex ecological communities [8, 22, 23] , an inference model for constructing microbial regulatory network should consider these interactions simultaneously. However, all of the studies mentioned above do not incorporate these features into their construction of regulatory networks. Association rule mining can be a promising way to infer complex relationships. A rule-based method, named smooth response surface (SRS) algorithm, was developed to construct complex regulatory networks [24] . Basing on a piecewise linear-quadratic polynomial, the SRS algorithm uses a three-dimensional model surface (3D-MS) to successfully infer the relationships between the target, activator, and repressor nodes.. In this paper, we adopt a similar rationale as the SRS algorithm to detect the cooperative and competitive relationships between microbes for constructing microbial regulatory networks. Our new methodology, named the rule-based microbial network (RMN) algorithm, is an advanced version of the rule-based approach. We used Tanh functions for modeling nonlinear responses as regulatory effects of microbes. To our understanding, Tanh functions have been used to model nonlinear responses in some microbial studies, such as dose influences of pathogens [25] , regulatory effects of microbes [26] , influences of microbial compositions (phospholipids fatty acids) [27] . The RMN algorithm uses a nonlinear regulatory OTU-triplet (NRO) model to capture cooperative and competitive relationships and consequently infers the directional interaction between microbes. We applied our new approach to simulated data and showed that the RMN algorithm was capable to reconstruct microbial regulatory networks. Furthermore, we used Koenig' data (2011) to construct the interaction network for the microbial community in infant gut [28] ; and our results suggest that Bifidobacterium, Streptococcus, Clostridium XI, and Bacteroides play essential roles in regulating the abundance of Veillonella in an infant gut microbiome.

O O O O O B O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O B I O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O B I O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B