#include <stdio.h>
#include <stdlib.h>
 
// Function to heapify a subtree with root at given index
void heapify(int arr[], int n, int i) {
    int largest = i;       // Initialize largest as root
    int left = 2 * i + 1;  // Left child index
    int right = 2 * i + 2; // Right child index
 
    // If left child is larger than root
    if (left < n && arr[left] > arr[largest])
        largest = left;
 
    // If right child is larger than largest so far
    if (right < n && arr[right] > arr[largest])
        largest = right;
 
    // If largest is not root
    if (largest != i) {
        int temp = arr[i];
        arr[i] = arr[largest];
        arr[largest] = temp;
 
        // Recursively heapify the affected sub-tree
        heapify(arr, n, largest);
    }
}
 
// Function to perform Heap Sort
void heapSort(int arr[], int n) {
    // Build a max heap
    for (int i = n / 2 - 1; i >= 0; i--)
        heapify(arr, n, i);
 
    // Extract elements from heap one by one
    for (int i = n - 1; i > 0; i--) {
        // Move current root to end
        int temp = arr[0];
        arr[0] = arr[i];
        arr[i] = temp;
 
        // Call max heapify on the reduced heap
        heapify(arr, i, 0);
    }
}
 
// Function to print the array
void printArray(int arr[], int n) {
    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);
    printf("\n");
}
 
int main() {
    int n;
 
    // Accepting user input for array size
    printf("Enter the number of elements: ");
    scanf("%d", &n);
 
    int arr[n];
 
    // Generating random array elements
    printf("Enter %d elements: ", n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
 
    // Sorting using Heap Sort
    heapSort(arr, n);
 
    // Printing the sorted array
    printf("Sorted array: ");
    printArray(arr, n);
 
    return 0;
}
 
 
				I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8vIEZ1bmN0aW9uIHRvIGhlYXBpZnkgYSBzdWJ0cmVlIHdpdGggcm9vdCBhdCBnaXZlbiBpbmRleAp2b2lkIGhlYXBpZnkoaW50IGFycltdLCBpbnQgbiwgaW50IGkpIHsKICAgIGludCBsYXJnZXN0ID0gaTsgICAgICAgLy8gSW5pdGlhbGl6ZSBsYXJnZXN0IGFzIHJvb3QKICAgIGludCBsZWZ0ID0gMiAqIGkgKyAxOyAgLy8gTGVmdCBjaGlsZCBpbmRleAogICAgaW50IHJpZ2h0ID0gMiAqIGkgKyAyOyAvLyBSaWdodCBjaGlsZCBpbmRleAoKICAgIC8vIElmIGxlZnQgY2hpbGQgaXMgbGFyZ2VyIHRoYW4gcm9vdAogICAgaWYgKGxlZnQgPCBuICYmIGFycltsZWZ0XSA+IGFycltsYXJnZXN0XSkKICAgICAgICBsYXJnZXN0ID0gbGVmdDsKCiAgICAvLyBJZiByaWdodCBjaGlsZCBpcyBsYXJnZXIgdGhhbiBsYXJnZXN0IHNvIGZhcgogICAgaWYgKHJpZ2h0IDwgbiAmJiBhcnJbcmlnaHRdID4gYXJyW2xhcmdlc3RdKQogICAgICAgIGxhcmdlc3QgPSByaWdodDsKCiAgICAvLyBJZiBsYXJnZXN0IGlzIG5vdCByb290CiAgICBpZiAobGFyZ2VzdCAhPSBpKSB7CiAgICAgICAgaW50IHRlbXAgPSBhcnJbaV07CiAgICAgICAgYXJyW2ldID0gYXJyW2xhcmdlc3RdOwogICAgICAgIGFycltsYXJnZXN0XSA9IHRlbXA7CgogICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGhlYXBpZnkgdGhlIGFmZmVjdGVkIHN1Yi10cmVlCiAgICAgICAgaGVhcGlmeShhcnIsIG4sIGxhcmdlc3QpOwogICAgfQp9CgovLyBGdW5jdGlvbiB0byBwZXJmb3JtIEhlYXAgU29ydAp2b2lkIGhlYXBTb3J0KGludCBhcnJbXSwgaW50IG4pIHsKICAgIC8vIEJ1aWxkIGEgbWF4IGhlYXAKICAgIGZvciAoaW50IGkgPSBuIC8gMiAtIDE7IGkgPj0gMDsgaS0tKQogICAgICAgIGhlYXBpZnkoYXJyLCBuLCBpKTsKCiAgICAvLyBFeHRyYWN0IGVsZW1lbnRzIGZyb20gaGVhcCBvbmUgYnkgb25lCiAgICBmb3IgKGludCBpID0gbiAtIDE7IGkgPiAwOyBpLS0pIHsKICAgICAgICAvLyBNb3ZlIGN1cnJlbnQgcm9vdCB0byBlbmQKICAgICAgICBpbnQgdGVtcCA9IGFyclswXTsKICAgICAgICBhcnJbMF0gPSBhcnJbaV07CiAgICAgICAgYXJyW2ldID0gdGVtcDsKCiAgICAgICAgLy8gQ2FsbCBtYXggaGVhcGlmeSBvbiB0aGUgcmVkdWNlZCBoZWFwCiAgICAgICAgaGVhcGlmeShhcnIsIGksIDApOwogICAgfQp9CgovLyBGdW5jdGlvbiB0byBwcmludCB0aGUgYXJyYXkKdm9pZCBwcmludEFycmF5KGludCBhcnJbXSwgaW50IG4pIHsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgIHByaW50ZigiJWQgIiwgYXJyW2ldKTsKICAgIHByaW50ZigiXG4iKTsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgbjsKICAgIAogICAgLy8gQWNjZXB0aW5nIHVzZXIgaW5wdXQgZm9yIGFycmF5IHNpemUKICAgIHByaW50ZigiRW50ZXIgdGhlIG51bWJlciBvZiBlbGVtZW50czogIik7CiAgICBzY2FuZigiJWQiLCAmbik7CiAgICAKICAgIGludCBhcnJbbl07CgogICAgLy8gR2VuZXJhdGluZyByYW5kb20gYXJyYXkgZWxlbWVudHMKICAgIHByaW50ZigiRW50ZXIgJWQgZWxlbWVudHM6ICIsIG4pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBzY2FuZigiJWQiLCAmYXJyW2ldKTsKICAgIH0KCiAgICAvLyBTb3J0aW5nIHVzaW5nIEhlYXAgU29ydAogICAgaGVhcFNvcnQoYXJyLCBuKTsKCiAgICAvLyBQcmludGluZyB0aGUgc29ydGVkIGFycmF5CiAgICBwcmludGYoIlNvcnRlZCBhcnJheTogIik7CiAgICBwcmludEFycmF5KGFyciwgbik7CiAgICAKICAgIHJldHVybiAwOwp9Cgo=
				
				
				
				
				
			 
			
				
			
			
				
MTAKYWJhCmdlZWtzZm9yZ2Vla3MKZ2Vla3Nmb3JnZWVrcwpnZWVrc2ZvcmdlZWtzCmdlZWtzZm9yZ2Vla3MKZ2Vla3Nmb3JnZWVrcwpnZWVrc2ZvcmdlZWtzCmdlZWtzZm9yZ2Vla3MKZ2Vla3Nmb3JnZWVrcwpnZWVrc2ZvcmdlZWtz
10
aba
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks