import sys input = lambda : sys.stdin.readline().rstrip() sys.setrecursionlimit(2*10**5+10) write = lambda x: sys.stdout.write(x+"\n") debug = lambda x: sys.stderr.write(x+"\n") writef = lambda x: print("{:.12f}".format(x)) class UF: # unionfind def __init__(self, n, depth): self.n = n self.depth = depth self.parent = list(range(n)) self.size = [1] * n def check(self): return [self.root(i) for i in range(self.n)] def root(self, i): inter = set() while self.parent[i]!=i: inter.add(i) i = self.parent[i] r = i for i in inter: self.parent[i] = r return r def connect(self, i, j): # 繋いだかどうかを返す ri = self.root(i) rj = self.root(j) if ri==rj: return False if self.depth[rj]>i&1 if not vv: g.add_edge(u,n+v, weight=-c) g.add_edge(v,n+u, weight=-c) else: g.add_edge(u,v, weight=-c) g.add_edge(n+v,n+u, weight=-c) for u in range(n-1): if u==s: continue g.add_edge(u,n+u,weight=0) g.remove_node(n+s) g.remove_node(2*n-1) gs.append(g) # print(g.nodes) # print(g.edges) val = inf for g in gs: res = nx.max_weight_matching(g, maxcardinality=True) if len(res)