class Student {
    constructor(surname, name, day, month, year, entryYear, course, group, marks) {
        this.surname = surname;
        this.name = name;
        this.day = day;
        this.month = month;
        this.year = year;
        this.entryYear = entryYear;
        this.course = course;
        this.group = group;
        this.marks = marks; 
        this.avg = 0;       
    }
}
 
let students = [
    new Student("Іваненко", "Іван", 12, 5, 2002, 2020, 3, "А-1", [[4,5,5,4,5],[5,4,4,5,5]]),
    new Student("Петренко", "Олена", 3, 8, 2001, 2019, 4, "А-1", [[5,5,5,5,5],[5,5,4,5,5]]),
    new Student("Сидоренко", "Микола", 21, 1, 2003, 2021, 2, "А-1", [[3,4,4,3,3],[4,3,3,4,4]]),
    new Student("Коваль", "Анна", 7, 9, 2002, 2020, 3, "А-1", [[4,4,5,4,4],[5,4,4,5,4]])
];
 
let n = 2; // семестри
let m = 5; // оцінки
let groupAvg = 0;
 
// Обчислення середнього балу студента та групи
for(let student of students) {
    let sum = 0;
    let count = 0;
    for(let s = 0; s < n; s++) {
        for(let p = 0; p < m; p++) {
            sum += student.marks[s][p];
            count++;
        }
    }
    student.avg = sum / count;
    groupAvg += student.avg;
}
 
groupAvg = groupAvg / students.length;
console.log(`Середній бал групи: ${groupAvg.toFixed(2)}\n`);
 
// Виведення студентів з середнім балом вище групи
console.log("Студенти з середнім балом вище середнього балу групи:\n");
students.forEach((student, index) => {
    if(student.avg > groupAvg) {
        console.log(`${index+1}. ${student.surname} \t ${student.name} \t ${student.day}.${student.month}.${student.year} \t ${student.entryYear} \t ${student.course} \t ${student.group}`);
        student.marks.forEach(sem => {
            console.log(sem.join(' '));
        });
        console.log(`avg = ${student.avg.toFixed(2)}\n`);
    }
});
 
				Y2xhc3MgU3R1ZGVudCB7CiAgICBjb25zdHJ1Y3RvcihzdXJuYW1lLCBuYW1lLCBkYXksIG1vbnRoLCB5ZWFyLCBlbnRyeVllYXIsIGNvdXJzZSwgZ3JvdXAsIG1hcmtzKSB7CiAgICAgICAgdGhpcy5zdXJuYW1lID0gc3VybmFtZTsKICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOwogICAgICAgIHRoaXMuZGF5ID0gZGF5OwogICAgICAgIHRoaXMubW9udGggPSBtb250aDsKICAgICAgICB0aGlzLnllYXIgPSB5ZWFyOwogICAgICAgIHRoaXMuZW50cnlZZWFyID0gZW50cnlZZWFyOwogICAgICAgIHRoaXMuY291cnNlID0gY291cnNlOwogICAgICAgIHRoaXMuZ3JvdXAgPSBncm91cDsKICAgICAgICB0aGlzLm1hcmtzID0gbWFya3M7IAogICAgICAgIHRoaXMuYXZnID0gMDsgICAgICAgCiAgICB9Cn0KCmxldCBzdHVkZW50cyA9IFsKICAgIG5ldyBTdHVkZW50KCLQhtCy0LDQvdC10L3QutC+IiwgItCG0LLQsNC9IiwgMTIsIDUsIDIwMDIsIDIwMjAsIDMsICLQkC0xIiwgW1s0LDUsNSw0LDVdLFs1LDQsNCw1LDVdXSksCiAgICBuZXcgU3R1ZGVudCgi0J/QtdGC0YDQtdC90LrQviIsICLQntC70LXQvdCwIiwgMywgOCwgMjAwMSwgMjAxOSwgNCwgItCQLTEiLCBbWzUsNSw1LDUsNV0sWzUsNSw0LDUsNV1dKSwKICAgIG5ldyBTdHVkZW50KCLQodC40LTQvtGA0LXQvdC60L4iLCAi0JzQuNC60L7Qu9CwIiwgMjEsIDEsIDIwMDMsIDIwMjEsIDIsICLQkC0xIiwgW1szLDQsNCwzLDNdLFs0LDMsMyw0LDRdXSksCiAgICBuZXcgU3R1ZGVudCgi0JrQvtCy0LDQu9GMIiwgItCQ0L3QvdCwIiwgNywgOSwgMjAwMiwgMjAyMCwgMywgItCQLTEiLCBbWzQsNCw1LDQsNF0sWzUsNCw0LDUsNF1dKQpdOwoKbGV0IG4gPSAyOyAvLyDRgdC10LzQtdGB0YLRgNC4CmxldCBtID0gNTsgLy8g0L7RhtGW0L3QutC4CmxldCBncm91cEF2ZyA9IDA7CgovLyDQntCx0YfQuNGB0LvQtdC90L3RjyDRgdC10YDQtdC00L3RjNC+0LPQviDQsdCw0LvRgyDRgdGC0YPQtNC10L3RgtCwINGC0LAg0LPRgNGD0L/QuApmb3IobGV0IHN0dWRlbnQgb2Ygc3R1ZGVudHMpIHsKICAgIGxldCBzdW0gPSAwOwogICAgbGV0IGNvdW50ID0gMDsKICAgIGZvcihsZXQgcyA9IDA7IHMgPCBuOyBzKyspIHsKICAgICAgICBmb3IobGV0IHAgPSAwOyBwIDwgbTsgcCsrKSB7CiAgICAgICAgICAgIHN1bSArPSBzdHVkZW50Lm1hcmtzW3NdW3BdOwogICAgICAgICAgICBjb3VudCsrOwogICAgICAgIH0KICAgIH0KICAgIHN0dWRlbnQuYXZnID0gc3VtIC8gY291bnQ7CiAgICBncm91cEF2ZyArPSBzdHVkZW50LmF2ZzsKfQoKZ3JvdXBBdmcgPSBncm91cEF2ZyAvIHN0dWRlbnRzLmxlbmd0aDsKY29uc29sZS5sb2coYNCh0LXRgNC10LTQvdGW0Lkg0LHQsNC7INCz0YDRg9C/0Lg6ICR7Z3JvdXBBdmcudG9GaXhlZCgyKX1cbmApOwoKLy8g0JLQuNCy0LXQtNC10L3QvdGPINGB0YLRg9C00LXQvdGC0ZbQsiDQtyDRgdC10YDQtdC00L3RltC8INCx0LDQu9C+0Lwg0LLQuNGJ0LUg0LPRgNGD0L/QuApjb25zb2xlLmxvZygi0KHRgtGD0LTQtdC90YLQuCDQtyDRgdC10YDQtdC00L3RltC8INCx0LDQu9C+0Lwg0LLQuNGJ0LUg0YHQtdGA0LXQtNC90YzQvtCz0L4g0LHQsNC70YMg0LPRgNGD0L/QuDpcbiIpOwpzdHVkZW50cy5mb3JFYWNoKChzdHVkZW50LCBpbmRleCkgPT4gewogICAgaWYoc3R1ZGVudC5hdmcgPiBncm91cEF2ZykgewogICAgICAgIGNvbnNvbGUubG9nKGAke2luZGV4KzF9LiAke3N0dWRlbnQuc3VybmFtZX0gXHQgJHtzdHVkZW50Lm5hbWV9IFx0ICR7c3R1ZGVudC5kYXl9LiR7c3R1ZGVudC5tb250aH0uJHtzdHVkZW50LnllYXJ9IFx0ICR7c3R1ZGVudC5lbnRyeVllYXJ9IFx0ICR7c3R1ZGVudC5jb3Vyc2V9IFx0ICR7c3R1ZGVudC5ncm91cH1gKTsKICAgICAgICBzdHVkZW50Lm1hcmtzLmZvckVhY2goc2VtID0+IHsKICAgICAgICAgICAgY29uc29sZS5sb2coc2VtLmpvaW4oJyAnKSk7CiAgICAgICAgfSk7CiAgICAgICAgY29uc29sZS5sb2coYGF2ZyA9ICR7c3R1ZGVudC5hdmcudG9GaXhlZCgyKX1cbmApOwogICAgfQp9KTsK