Cooperative and Noncooperative Multi-Level Programming