#include <iostream>
#include <list>
using namespace std;
struct Student{
string lastName;
int year;
int matan;
int linal;
};
bool compareByLastName(const Student &student1, const Student &student2){
return (student1.lastName)<(student2.lastName);
}
bool compareByYear(const Student &student1, const Student &student2){
return (student1.year)<(student2.year);
}
bool removeIfComparator(const Student &student1){
return ((student1.matan)<60) or ((student1.linal<60));
}
void printList(list<Student> &lst){
for(list<Student>::iterator it = lst.begin();it!=lst.end();it++){
cout<<(*it).lastName<<" "<<(*it).year<<" "<<(*it).matan<<" "<<(*it).linal<<endl;
}
}
int main(){
Student firstStudent;
list<Student> lst;
for(int i=0;i<3;i++){
cin>>firstStudent.lastName>>firstStudent.year>>firstStudent.matan>>firstStudent.linal;
lst.push_back(firstStudent);
}
printList(lst);
lst.sort(compareByLastName);
cout<<"Sorted by last name list: ";
printList(lst);
lst.sort(compareByYear);
cout<<"Sorted by year list: ";
printList(lst);
for(list<Student>::iterator it=lst.begin();it!=lst.end();it++){
if((*it).matan>60 && (*it).linal>60){
(*it).year++;
}
}
lst.remove_if(removeIfComparator);
cout<<"Updated list after exams: ";
printList(lst);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGlzdD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBTdHVkZW50ewogICAgc3RyaW5nIGxhc3ROYW1lOwogICAgaW50IHllYXI7CiAgICBpbnQgbWF0YW47CiAgICBpbnQgbGluYWw7Cn07CmJvb2wgY29tcGFyZUJ5TGFzdE5hbWUoY29uc3QgU3R1ZGVudCAmc3R1ZGVudDEsIGNvbnN0IFN0dWRlbnQgJnN0dWRlbnQyKXsKcmV0dXJuIChzdHVkZW50MS5sYXN0TmFtZSk8KHN0dWRlbnQyLmxhc3ROYW1lKTsKfQpib29sIGNvbXBhcmVCeVllYXIoY29uc3QgU3R1ZGVudCAmc3R1ZGVudDEsIGNvbnN0IFN0dWRlbnQgJnN0dWRlbnQyKXsKICAgIHJldHVybiAoc3R1ZGVudDEueWVhcik8KHN0dWRlbnQyLnllYXIpOwp9CmJvb2wgcmVtb3ZlSWZDb21wYXJhdG9yKGNvbnN0IFN0dWRlbnQgJnN0dWRlbnQxKXsKICAgIHJldHVybiAoKHN0dWRlbnQxLm1hdGFuKTw2MCkgb3IgKChzdHVkZW50MS5saW5hbDw2MCkpOwp9Cgp2b2lkIHByaW50TGlzdChsaXN0PFN0dWRlbnQ+ICZsc3QpewogICAgZm9yKGxpc3Q8U3R1ZGVudD46Oml0ZXJhdG9yIGl0ID0gbHN0LmJlZ2luKCk7aXQhPWxzdC5lbmQoKTtpdCsrKXsKICAgICAgICBjb3V0PDwoKml0KS5sYXN0TmFtZTw8IiAiPDwoKml0KS55ZWFyPDwiICI8PCgqaXQpLm1hdGFuPDwiICI8PCgqaXQpLmxpbmFsPDxlbmRsOwogICAgfQp9CgppbnQgbWFpbigpewogICAgU3R1ZGVudCBmaXJzdFN0dWRlbnQ7CiAgICBsaXN0PFN0dWRlbnQ+IGxzdDsKICAgIGZvcihpbnQgaT0wO2k8MztpKyspewogICAgICAgIGNpbj4+Zmlyc3RTdHVkZW50Lmxhc3ROYW1lPj5maXJzdFN0dWRlbnQueWVhcj4+Zmlyc3RTdHVkZW50Lm1hdGFuPj5maXJzdFN0dWRlbnQubGluYWw7CiAgICAgICAgbHN0LnB1c2hfYmFjayhmaXJzdFN0dWRlbnQpOwogICAgfQogICAgcHJpbnRMaXN0KGxzdCk7CiAgICBsc3Quc29ydChjb21wYXJlQnlMYXN0TmFtZSk7CiAgICBjb3V0PDwiU29ydGVkIGJ5IGxhc3QgbmFtZSBsaXN0OiAiOwogICAgcHJpbnRMaXN0KGxzdCk7CiAgICBsc3Quc29ydChjb21wYXJlQnlZZWFyKTsKICAgIGNvdXQ8PCJTb3J0ZWQgYnkgeWVhciBsaXN0OiAiOwogICAgcHJpbnRMaXN0KGxzdCk7CiAgICBmb3IobGlzdDxTdHVkZW50Pjo6aXRlcmF0b3IgaXQ9bHN0LmJlZ2luKCk7aXQhPWxzdC5lbmQoKTtpdCsrKXsKICAgICAgICBpZigoKml0KS5tYXRhbj42MCAmJiAoKml0KS5saW5hbD42MCl7CiAgICAgICAgICAgICgqaXQpLnllYXIrKzsKICAgICAgICB9CiAgICB9CiAgICBsc3QucmVtb3ZlX2lmKHJlbW92ZUlmQ29tcGFyYXRvcik7CiAgICBjb3V0PDwiVXBkYXRlZCBsaXN0IGFmdGVyIGV4YW1zOiAiOwogICAgcHJpbnRMaXN0KGxzdCk7Cn0=