diff --git a/main.cpp b/main.cpp
index 50c3d9a..4da4a38 100644
--- a/main.cpp
+++ b/main.cpp
@@ -1,9 +1,89 @@
-#include "histogram.h"
+#include <iostream>
+#include <vector>
+#include <cmath>
+using namespace std;
 
-int main() {
-    auto in = input_data();
-    auto bins = make_histogram(in.numbers, in.bin_count);
-    show_histogram_text(bins);
-    return 0;
+struct Input {
+    vector<double> numbers;
+    size_t bin_count{};
+    size_t number_count;
+};
+
+Input input_data() {
+    Input in;
+    cin >> in.number_count;
+
+    in.numbers.resize(in.number_count);
+    for (size_t i = 0; i < in.number_count; i++) {
+        cin >> in.numbers[i];
+    }
+
+    cin >> in.bin_count;
+    return in;
 }
 
+int main(){
+    const size_t SCREEN_WIDTH = 80;
+    const size_t MAX_ASTERISK = SCREEN_WIDTH - 3 - 1;
+
+    Input in = input_data();
+    size_t number_count;
+    cin >> number_count;
+
+    double minc, maxc;
+    minc = maxc = in.numbers[0];
+    for (size_t i = 1; i < number_count; i++ ){
+        if(in.numbers[i] < minc){
+            minc = in.numbers[i];
+        }
+        else if (in.numbers[i] > maxc){
+            maxc = in.numbers[i];
+        }
+    }
+
+    vector<size_t> bins(in.bin_count);
+    double bin_size = (maxc - minc) / in.bin_count;
+    size_t bin_max_size = 0;
+    for (size_t i = 0; i < in.number_count; i++) {
+        bool found = false;
+        for (size_t j = 0; (j < in.bin_count - 1) && !found; j++) {
+            auto lo = minc + j * bin_size;
+            auto hi = minc + (j + 1) * bin_size;
+            if ((lo <= in.numbers[i]) && (in.numbers[i] < hi)) {
+                bins[j]++;
+                found = true;
+                if (bins[j]> bin_max_size){
+                    bin_max_size = bins[j];
+                }
+            }
+        }
+        if (!found) {
+            bins[in.bin_count - 1]++;
+            if (bins[in.bin_count - 1]> bin_max_size){
+                    bin_max_size = bins[in.bin_count - 1];
+                }
+        }
+    }
+    size_t height;
+    for(int i = 0; i<in.bin_count; i++){
+        if(bins[i]<100){
+            cout<<" ";
+            if(bins[i]<10){
+                cout<<" ";
+            }
+        }
+        cout<<bins[i]<<"|";
+        if(bin_max_size >= MAX_ASTERISK){
+            height = floor(static_cast<double>(bins[i])*76.0f/static_cast<double>(bin_max_size));
+        } else {
+            height = bins[i];
+        }
+        for(int j = 0; j<height; j++){
+            cout<<"*";
+        }
+
+        cout<<endl;
+    }
+
+    return 0;
+}