import java.util.Scanner;

public class BMICalculatorArray {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        System.out.print("Enter number of users: ");
        int n = sc.nextInt();

        String[] name = new String[n];
        int[] age = new int[n];
        double[] weight = new double[n];
        double[] height = new double[n];
        double[] bmi = new double[n];
        String[] category = new String[n];

        int aboveNormalCount = 0;

        double normalSum = 0, obeseSum = 0;
        int normalCount = 0, obeseCount = 0;

        for (int i = 0; i < n; i++) {
            System.out.println("\nUser " + (i + 1));
            System.out.print("Name: ");
            name[i] = sc.next();
            System.out.print("Age: ");
            age[i] = sc.nextInt();
            System.out.print("Weight (kg): ");
            weight[i] = sc.nextDouble();
            System.out.print("Height (cm): ");
            height[i] = sc.nextDouble();

            double hMeter = height[i] / 100;
            bmi[i] = weight[i] / (hMeter * hMeter);

            // BMI Category
            if (bmi[i] >= 18.5 && bmi[i] <= 24.9) {
                category[i] = "Normal";
                normalSum += bmi[i];
                normalCount++;
            } 
            else if (bmi[i] >= 25 && bmi[i] <= 29.9) {
                category[i] = "Overweight";
                aboveNormalCount++;
            } 
            else if (bmi[i] >= 30 && bmi[i] <= 34.9) {
                category[i] = "Obese";
                obeseSum += bmi[i];
                obeseCount++;
                aboveNormalCount++;
            } 
            else if (bmi[i] >= 35 && bmi[i] <= 39.9) {
                category[i] = "Severely Obese";
                obeseSum += bmi[i];
                obeseCount++;
                aboveNormalCount++;
            } 
            else {
                category[i] = "Morbidly Obese";
                obeseSum += bmi[i];
                obeseCount++;
                aboveNormalCount++;
            }
        }

        // Output
        System.out.println("\nName\tAge\tWeight\tHeight\tBMI\tCategory");
        for (int i = 0; i < n; i++) {
            System.out.printf("%s\t%d\t%.1f\t%.1f\t%.2f\t%s\n",
                    name[i], age[i], weight[i], height[i], bmi[i], category[i]);
        }

        if (normalCount > 0)
            System.out.println("\nAverage BMI for Normal category = " + (normalSum / normalCount));
        else
            System.out.println("\nNo Normal category users");

        if (obeseCount > 0)
            System.out.println("Average BMI for Obesity category = " + (obeseSum / obeseCount));
        else
            System.out.println("No Obesity category users");

        System.out.println("Number of users above normal BMI = " + aboveNormalCount);

        sc.close();
    }
}
