A branch-And-cut algorithm for the multilevel generalized assignment problem