29 sort(left.begin(),left.end()); left.erase(unique(left.begin(),left.end()),left.end());
30 sort(right.begin(),right.end()); right.erase(unique(right.begin(),right.end()),right.end());
31 for(
int u: left) mcf.add_edge(start,u,1,0);
32 for(
int v: right) mcf.add_edge(v,goal,1,0);
37 ll res=mcf.flow(start,goal,1);
40 ret.push_back(ret.back()+res);