class MaximumMatching {

    private void blossom(int v, int w, int base) {
        base = uf.find(base);
        int[] supports1 = blossomSupports(v, w, base);
        int[] supports2 = blossomSupports(w, v, base);
        
        for (int i = 0; i < supports1.length; i++)
            uf.union(supports1[i], supports1[0]);
        for (int i = 0; i < supports2.length; i++)
            uf.union(supports2[i], supports2[0]);
        
        even[uf.find(base)] = even[base];         
    }

    private  MaximumMatching(Graph graph, Matching matching, int nMatched, IntSet subset);

}