Hard problem

CodeForces - 706C