#include <iostream>
#include <vector>
using namespace std;

class BinaryHeap {
private:
    vector<int> heap; 
    
    void heapifyUp(int index) {
        
        int parent = (index - 1) / 2;

        
        if (index > 0 && heap[index] > heap[parent]) {
            swap(heap[index], heap[parent]);
        
            heapifyUp(parent);
        }
    }

public:
   BinaryHeap() {
        heap.push_back(-1); 
    }

   
    void insert(int value) {
      
        heap.push_back(value);
        
      
        heapifyUp(heap.size() - 1);
    }

  
    void printHeap() {
        for (int i = 1; i < heap.size(); i++) {
            cout << heap[i] << " ";
        }
        cout << endl;
    }
};

int main() {
    BinaryHeap heap;

  
    heap.insert(10);
    heap.insert(20);
    heap.insert(5);
    heap.insert(30);
    heap.insert(15);

    
    cout << "Heap after insertions: ";
    heap.printHeap();

    return 0;
}