#include <iostream>
#include <fstream>
#include <string>
typedef int bufor_type;
using namespace std;
template <typename type>
class Bufor;
template<typename type>
ostream& operator << (ostream& st, const Bufor<type>& A)
{
A.Show(st);
return st;
}
template <typename type>
class Bufor
{
private:
type *Arr = new type;
int Start;
int End;
int Arr_Size;
bool circle;
public:
Bufor() :Arr_Size(0), Arr(NULL), End(0), Start(0){}
Bufor(int b_size, type *b_arr, int b_start, int b_end)
{
set(b_size, b_start, b_end);
Arr = b_arr;
}
void set(int b_size, int b_start, int b_end)
{
Arr = new type[b_size];
Arr_Size = b_size;
Start = b_start;
End = b_end;
circle = false;
}
void Show(ostream& stream)const
{
for (int i = Start; i < End - 1; i = (++i) % Arr_Size) stream << Arr[i] << " ";
}
friend ostream& operator << <type>(ostream& st, const Bufor& A);
};
int main()
{
Bufor<bufor_type> A;
int *temp = new int;
Bufor<bufor_type> B(3, temp, 0, 0);
A = B;
cout << B;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KCnR5cGVkZWYgaW50IGJ1Zm9yX3R5cGU7Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPHR5cGVuYW1lIHR5cGU+CmNsYXNzIEJ1Zm9yOwoKdGVtcGxhdGU8dHlwZW5hbWUgdHlwZT4Kb3N0cmVhbSYgb3BlcmF0b3IgPDwgKG9zdHJlYW0mIHN0LCBjb25zdCBCdWZvcjx0eXBlPiYgQSkKewoJQS5TaG93KHN0KTsKCXJldHVybiBzdDsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIHR5cGU+CmNsYXNzIEJ1Zm9yCnsKcHJpdmF0ZToKCXR5cGUgKkFyciA9IG5ldyB0eXBlOwoJaW50IFN0YXJ0OwoJaW50IEVuZDsKCWludCBBcnJfU2l6ZTsKCWJvb2wgY2lyY2xlOwpwdWJsaWM6CglCdWZvcigpIDpBcnJfU2l6ZSgwKSwgQXJyKE5VTEwpLCBFbmQoMCksIFN0YXJ0KDApe30KCUJ1Zm9yKGludCBiX3NpemUsIHR5cGUgKmJfYXJyLCBpbnQgYl9zdGFydCwgaW50IGJfZW5kKQoJewoJCXNldChiX3NpemUsIGJfc3RhcnQsIGJfZW5kKTsKCQlBcnIgPSBiX2FycjsKCX0KCgl2b2lkIHNldChpbnQgYl9zaXplLCBpbnQgYl9zdGFydCwgaW50IGJfZW5kKQoJewoJCUFyciA9IG5ldyB0eXBlW2Jfc2l6ZV07CgkJQXJyX1NpemUgPSBiX3NpemU7CgkJU3RhcnQgPSBiX3N0YXJ0OwoJCUVuZCA9IGJfZW5kOwoJCWNpcmNsZSA9IGZhbHNlOwoJfQoKCXZvaWQgU2hvdyhvc3RyZWFtJiBzdHJlYW0pY29uc3QKCXsKCQlmb3IgKGludCBpID0gU3RhcnQ7IGkgPCBFbmQgLSAxOyBpID0gKCsraSkgJSBBcnJfU2l6ZSkgc3RyZWFtIDw8IEFycltpXSA8PCAiICI7Cgl9CgoJZnJpZW5kIG9zdHJlYW0mIG9wZXJhdG9yIDw8IDx0eXBlPihvc3RyZWFtJiBzdCwgY29uc3QgQnVmb3ImIEEpOwp9OwoKaW50IG1haW4oKQp7CglCdWZvcjxidWZvcl90eXBlPiBBOwoJaW50ICp0ZW1wID0gbmV3IGludDsKCUJ1Zm9yPGJ1Zm9yX3R5cGU+IEIoMywgdGVtcCwgMCwgMCk7CglBID0gQjsKCWNvdXQgPDwgQjsKCXJldHVybiAwOwp9