#include <iostream>
#include <vector>


using namespace std;

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


    int number_count, bucket;

    do
    {
        cerr << "Enter number count: ";
        cin >> number_count;
    }
    while (number_count < 1);

    do
    {
        cerr << "Enter bucket: ";
        cin >> bucket;
    }
    while (bucket < 1);

    cerr << "\n";

    vector <double> numbers(number_count);
    for (int i = 0; i < number_count; i++) cin >> numbers[i];

    float min = numbers[0];
    float max = numbers[0];

    for (float x : numbers)
    {
        if (x < min) min = x;
        else if (x > max) max = x;
    }

    float k = (max-min)/bucket;

    vector <int> stolb(bucket);

    for (int j = 0; j < bucket; j++) stolb[j] = 0;

    for (int i = 0; i < number_count; i++)
    {
        bool flag = false;
        for (int j = 0; (j < bucket && !flag); j++)
        {
            if (numbers[i] >= (min+k*j) && numbers[i] < (min+k*(1+j)))
            {
                stolb[j]++;
                flag = true;

            }
        }
        if (!flag) stolb[bucket-1]++;
    }

    int maxlen = 0;

    for (int j = 0; j < bucket; j++)
    {
        if (maxlen<stolb[j]) maxlen = stolb[j];
    }

    for (int j = 0; j < bucket; j++)
    {
        if (stolb[j] < 100) cout << " ";
        if (stolb[j] < 10) cout << " ";

        size_t height = stolb[j];
        if (maxlen > MAX_ASTERISK)
        {
            if (maxlen != stolb[j]) height = MAX_ASTERISK * (static_cast<float>(stolb[j])/maxlen);
            else if (maxlen == stolb[j]) height = MAX_ASTERISK;
        }
        if (maxlen>stolb[j]) {
            for (int i=0; i< maxlen-stolb[j]; i++) {
                cout << " ";
            }
        }
        for (int i = 0; i < height; i++)
        {
            cout << "*";
        }

        cout << "|" << stolb[j];

        cout << "\n";
    }

    return 0;
}