#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

//Ñîçäàíèå ñòðóêòóðû Input äëÿ âõîäíûõ äàííûõ
	struct Input {
        vector<double> Numbers;
        size_t bin_count{};
    };

//Ôóíêöèÿ ââîäà
Input input_data(){
    size_t number_count;
    Input stct;
    //Ââîä êîëè÷åñòâà ýëåìåíòîâ ìàññèâà
    cerr << "Enter number count ";
	cin >> number_count;
    //Ââîä ìàññèâà
	vector<double> Numbers(number_count);
	stct.Numbers.resize(number_count);
	cerr << "Enter array:\n";
	cin >> Numbers[0];
	for (int i = 1; i < number_count; i++) {
		cin >> stct.Numbers[i];
	}
	//Ââîä êîëè÷åñòâà êîðçèí
	cerr << "Enter bin count\n";
	cin >> stct.bin_count;
	//Âîçâðàùàåì ñòðóêòóðó
	return stct;
}

//Ôóíêöèÿ ïîèñêà ìèíèìóìà è ìàêñèììóìà
void find_minmax(const vector<double>& numbers, double& Min, double& Max){
    Min = numbers[0];
    Max = numbers[0];
    for (int i = 1; i < numbers.size(); i++) {
		if (numbers[i] > Max)
			Max = numbers[i];
		if (numbers[i] < Min)
			Min = numbers[i];
	}

}

/*
	//Ïîèñê ìàêñèìóìà
	double max = Numbers[0];
	for (int i = 1; i < number_count; i++) {
		if (Numbers[i] > max)
			max = Numbers[i];
	}
	//Ïîèñê ìèíèìóìà
	double min = Numbers[0];
	for (int i = 1; i < number_count; i++) {
		if (Numbers[i] < min)
			min = Numbers[i];
	}

	*/

int main() {
    const size_t SCREEN_WIDTH = 80;
    const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 3;

	//Ââîä ìàññèâà è êîëè÷åñòâà êîðçèí
	Input in = input_data();

	//Îïðåäåëåíèå ìèíèìóìà è ìàêñèìóìà
	double max, min;
	find_minmax(in.Numbers, min, max);

	/*
	//Îïðåäåëåíèå øàãà ìåæäó êîðçèíàìè
	double bin_size = (max - min) / bin_count;
	//Ìàññèâ êîðçèí
	vector<size_t> bins(bin_count);
	for (size_t i = 0; i < bin_count; i++) // îáíóëåíèå êîðçèí
		bins[i] = 0;
	for (size_t i = 0; i < bin_count; i++) {
		double lo = min + i * bin_size;
		double hi = min + (i + 1) * bin_size;
		for (size_t j = 0; j < number_count; j++) {
			if (lo <= Numbers[j] && Numbers[j] <= hi)
				bins[i]++;
		}
	}
	//Ïðîâåðêà íåîáõîäèìîñòè ìàñøàòáèðîâàíèÿ
	size_t max4scale = 0;
	for (size_t x : bins){
        if (x > max4scale){
            max4scale = x;
        }
	}
	if (max4scale > MAX_ASTERISK){
        for (size_t x : bins) {
            if (x >= 100){
                cout  << x << " | ";
            }
            else if (x >= 10){
                cout << " " << x << " | ";
            }
            else{
                cout << "  " << x << " | ";
            }
            size_t count = x;
            size_t height = MAX_ASTERISK * (static_cast<double>(count) / max4scale);
            for (size_t i = 0; i < height; i++) {
                cout << "*";
            }
            cout << "\n";
        }
	}
	else{
	//Âûâîä
	for (size_t x : bins) {
	    if (x >= 100){
            cout  << x << " | ";
	    }
	    else if (x >= 10){
            cout << " " << x << " | ";
	    }
	    else{
            cout << "  " << x << " | ";
	    }
		for (size_t i = 0; i < x; i++) {
			cout << "*";
		}
		cout << "\n";
    }
	}
	*/
	return 0;
}