#include <cstddef>
#include <iostream>
#include <vector>
const std::size_t HEIGHT = 10;
const std::size_t WIDTH = 10;
typedef std::vector<char> MatrixDim;
typedef std::vector<MatrixDim> Matrix;
typedef MatrixDim::size_type MatrixDimSize;
inline void set_bit(Matrix& matrix, MatrixDimSize x, MatrixDimSize y)
{
matrix[(x) / 8][y] |= (0x80 >> ((x) % 8));
}
void print_screen(Matrix const& matrix)
{
for (MatrixDimSize y = 0; y < HEIGHT; y++)
{
for (MatrixDimSize x = 0; x < WIDTH/8+1; x++)
{
for (int i = 0x80; i != 0; i >>= 1)
{
std::cout << (((matrix[x][y] & i) != 0) ? '*' : ' ');
}
}
std::cout << "\n";
}
}
int main()
{
Matrix matrix(HEIGHT, MatrixDim(WIDTH));
for (MatrixDimSize x = 0; x < WIDTH; x++)
{
for (MatrixDimSize y = 0; y < HEIGHT; y++)
{
if (x == 0 || y == 0 || x == WIDTH-1 || y == HEIGHT-1)
{
set_bit(matrix, x, y);
}
}
}
print_screen(matrix);
}
I2luY2x1ZGUgPGNzdGRkZWY+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KCmNvbnN0IHN0ZDo6c2l6ZV90IEhFSUdIVCA9IDEwOwpjb25zdCBzdGQ6OnNpemVfdCBXSURUSCA9IDEwOwoKdHlwZWRlZiBzdGQ6OnZlY3RvcjxjaGFyPiBNYXRyaXhEaW07CnR5cGVkZWYgc3RkOjp2ZWN0b3I8TWF0cml4RGltPiBNYXRyaXg7CnR5cGVkZWYgTWF0cml4RGltOjpzaXplX3R5cGUgTWF0cml4RGltU2l6ZTsKCmlubGluZSB2b2lkIHNldF9iaXQoTWF0cml4JiBtYXRyaXgsIE1hdHJpeERpbVNpemUgeCwgTWF0cml4RGltU2l6ZSB5KQp7CiAgICBtYXRyaXhbKHgpIC8gOF1beV0gfD0gKDB4ODAgPj4gKCh4KSAlIDgpKTsKfQoKdm9pZCBwcmludF9zY3JlZW4oTWF0cml4IGNvbnN0JiBtYXRyaXgpCnsKCWZvciAoTWF0cml4RGltU2l6ZSB5ID0gMDsgeSA8IEhFSUdIVDsgeSsrKQogICAgewogICAgICAgIGZvciAoTWF0cml4RGltU2l6ZSB4ID0gMDsgeCA8IFdJRFRILzgrMTsgeCsrKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChpbnQgaSA9IDB4ODA7IGkgIT0gMDsgaSA+Pj0gMSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICgoKG1hdHJpeFt4XVt5XSAmIGkpICE9IDApID8gJyonIDogJyAnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBzdGQ6OmNvdXQgPDwgIlxuIjsKICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBNYXRyaXggbWF0cml4KEhFSUdIVCwgTWF0cml4RGltKFdJRFRIKSk7CiAgICAKICAgIGZvciAoTWF0cml4RGltU2l6ZSB4ID0gMDsgeCA8IFdJRFRIOyB4KyspCiAgICB7CiAgICAgICAgZm9yIChNYXRyaXhEaW1TaXplIHkgPSAwOyB5IDwgSEVJR0hUOyB5KyspCiAgICAgICAgewogICAgICAgICAgICBpZiAoeCA9PSAwIHx8IHkgPT0gMCB8fCB4ID09IFdJRFRILTEgfHwgeSA9PSBIRUlHSFQtMSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgc2V0X2JpdChtYXRyaXgsIHgsIHkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHByaW50X3NjcmVlbihtYXRyaXgpOwp9