A bi-level multi-choice programming problem. (1st January 2015)