#include<bits/stdc++.h>
#include<windows.h>
typedef struct {

	int x, y;
	char ch;

} STU;
STU st[5000];
void gotoxy(int x, int y) {
	HANDLE hout;
	COORD pos;
	pos.X = x;
	pos.Y = y;
	hout = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleCursorPosition(hout, pos);
}
void show_cursor(int hide) {
	CONSOLE_CURSOR_INFO cciCursor;
	HANDLE hout;
	hout = GetStdHandle(STD_OUTPUT_HANDLE);
	if (GetConsoleCursorInfo(hout, &cciCursor))
	{
		cciCursor.bVisible = hide;
		SetConsoleCursorInfo(hout, &cciCursor);
	}

}
void set_color(int color) {
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);

}
main() {
	int i, j;
	show_cursor(0);
	srand(time(NULL));
	for (i = 0; i < 100; i++) {
		st[i].x = rand() % 80;
		st[i].y = rand() % 20;
		st[i].ch = rand() % (49 - 47) + 48;
	}
	while (1) {
		for (i = 0; i < 100; i++) {
			gotoxy(st[i].x, st[i].y);
			set_color(0x2);
			putchar(st[i].ch);
			gotoxy(st[i].x, st[i].y - 5);
			putchar(' ');
			st[i].y++;
			st[i].ch = rand() % (49 - 29) + 48;
			if (st[i].y - 5 >= 18) {
				gotoxy(st[i].x, st[i].y - 1);
				putchar(' ');
				gotoxy(st[i].x, st[i].y - 2);
				putchar(' ');
				gotoxy(st[i].x, st[i].y - 3);
				putchar(' ');
				gotoxy(st[i].x, st[i].y - 4);
				putchar(' ');
				gotoxy(st[i].x, st[i].y - 4);
				putchar(' ');
			}
			if (st[i].y > 23) {
				st[i].x = rand() % 80;
				st[i].y = rand() % 20;
			}
			gotoxy(st[i].x, st[i].y);
			set_color(0xA);
			putchar(st[i].ch);
		}
		Sleep(20);
	}
}