#include<bits/stdc++.h>
using namespace std;
template<class T>
struct Chain_Line{
unsigned _size;
struct Chain_Node{
T _this;
Chain_Node*_next,*_last;
Chain_Node(){
_this=(new T),_next=nullptr,_last=nullptr;
}
Chain_Node(T __this=(new T),Chain_Node* __next=nullptr,Chain_Node* __last=nullptr){
_this=__this,_next=__next,_last=__last;
}
Chain_Node operator=(Chain_Node __vnx){
_this=__vnx._this;
_next=__vnx._next;
_last=__vnx._last;
return (*this);
}
Chain_Node operator==(Chain_Node __vnx){
return ((_this==__vnx._this)&&(_next==__vnx._next)&&(_last==__vnx._last));
}
}*_head,*_tail;
struct iterator{
Chain_Node* _pos;
iterator(){
_pos=nullptr;
}
iterator(Chain_Node* __pos){
_pos=__pos;
}
iterator operator+(unsigned __x){
Chain_Node*_stt;
_stt=_pos;
for(unsigned i=1;i<=__x;++i) _stt=_stt->_next;
return _stt;
}
iterator operator-(unsigned __x){
Chain_Node*_stt;
_stt=_pos;
for(unsigned i=1;i<=__x;++i) _stt=_stt->_lst;
return _stt;
}
iterator operator++(){
return (*this)=(*this)->_next;
}
iterator operator++(int helps){
(*this)=(*this)->_next;
return (*this)->_last;
}
bool operator==(iterator __it){
return _pos==__it.pos;
}
bool operator!=(iterator __it){
return _pos!=__it.pos;
}
unsigned operator-(iterator __it){
iterator _it=(*this);
unsigned num=0;
while(_it!=__it) _it=_it-1,++num;
return num;
}
};
unsigned size(){
return _size;
}
Chain_Line(){
_size=0;
_head=nullptr;
_tail=nullptr;
}
Chain_Line(unsigned __x){
resize(__x);
}
void resize(unsigned __x){
_size=__x;
_head->_next=new Chain_Node;
Chain_Node* _now,_last;
_now=_head->_next;
for(unsigned i=1;i<__x;++i){
_now->_next=(new Chain_Node);
_last=_now;
_now=_now._next;
_now->_last=_last;
}
_tail->_last=_now;
}
};
int main(){
Chain_Line<int> a(100);
return 0;
}