// Build don't link: 
// Special g++ Options: -O
// GROUPS passed mentor
struct Word {
   struct S1 *p1;
};
struct S1 {
   Word o;
   void shift_left(int delta, int ct);
};
inline void S1::shift_left(int delta, int ct)
{
   int cnt = ct;
   for (S1 *to_p = this, *from_p = to_p + delta; cnt--;) *to_p++ = *from_p++;
}

void dispose_t(S1 *tp, int from_index, int ct, const int d_last_t)
{
        int new_ct = d_last_t + 1 - ct;
        tp[0].o.p1[from_index].shift_left(ct, new_ct - from_index);
}
