Problem: At the vertices of a regular hexagon are written six nonnegative integers
whose sum is $2003^{2003}$.
Bert is allowed to make moves of the following form:
he may pick a vertex and replace the number written
there by the absolute value of the difference between the numbers
written at the two neighboring vertices.
Prove that Bert can make a sequence of moves,
after which the number $0$ appears at all six vertices.

\end{enumerate}

Solution: If $a \le b \le c$ are \emph{odd} integers,
the configuration which has $(a,b-a,b,c-b,c,c-a)$ around the hexagon
in some order (up to cyclic permutation and reflection)
is said to be \emph{great} (picture below).

\begin{claim*}
  We can reach a great configuration
  from any configuration with odd sum.
\end{claim*}
\begin{proof}
  We should be able to find an equilateral triangle
  whose vertices have odd sum.
  If all three vertices are odd, then we are already done.
  Otherwise, operate as in the following picture (modulo $2$).
  \begin{center}
  \begin{asy}
  size(10cm);
  picture[] h = new picture[4];
  h[0] = new picture;
  h[1] = new picture;
  h[2] = new picture;
  h[3] = new picture;

  pen cu = blue + fontsize(9pt);
  pen cd = deepgreen + fontsize(7pt);
  pen mu = lightred + fontsize(9pt);
  pen md = orange + fontsize(7pt);

  for (int i=0; i<=3; ++i) {
  draw(h[i], dir(30)--dir(150)--dir(270)--cycle, cd);
  draw(h[i], dir(90)--dir(210)--dir(330)--cycle, cu);
  draw(h[i], dir(30)--dir(90)--dir(150)--dir(210)--dir(270)--dir(330)--cycle, lightgray);
  }

  label(h[0], "$1$", dir(90), dir(90), cu);
  label(h[0], "$\ast$", dir(150), dir(150), cd);
  label(h[0], "$0$", dir(210), dir(210), cu);
  label(h[0], "$\ast$", dir(270), dir(270), cd);
  label(h[0], "$0$", dir(330), dir(330), cu);
  label(h[0], "$\ast$", dir(30), dir(30), cd);

  label(h[1], "$1$", dir(90), dir(90), cu);
  label(h[1], "$1$", dir(150), dir(150), md);
  label(h[1], "$0$", dir(210), dir(210), cu);
  label(h[1], "$0$", dir(270), dir(270), md);
  label(h[1], "$0$", dir(330), dir(330), cu);
  label(h[1], "$1$", dir(30), dir(30), md);

  label(h[2], "$1$", dir(90), dir(90), cu);
  label(h[2], "$1$", dir(150), dir(150), cd);
  label(h[2], "$1$", dir(210), dir(210), mu);
  label(h[2], "$0$", dir(270), dir(270), cd);
  label(h[2], "$1$", dir(330), dir(330), mu);
  label(h[2], "$1$", dir(30), dir(30), cd);

  label(h[3], "$1$", dir(90), dir(90), cu);
  label(h[3], "$0$", dir(150), dir(150), md);
  label(h[3], "$1$", dir(210), dir(210), cu);
  label(h[3], "$0$", dir(270), dir(270), md);
  label(h[3], "$1$", dir(330), dir(330), cu);
  label(h[3], "$0$", dir(30), dir(30), md);

  add(shift(0,0)*h[0]);
  add(shift(3,0)*h[1]);
  add(shift(6,0)*h[2]);
  add(shift(9,0)*h[3]);
  \end{asy}
  \end{center}
  Thus we arrived at a great configuration.
\end{proof}

\begin{claim*}
  Bert's goal is possible for all great configurations.
\end{claim*}
\begin{proof}
  [Proof, suggested by Haoran Chen]
  If $a=b=c$ then we have $(t,0,t,0,t,0)$ which is obviously winnable.

  Otherwise, we can perform the following three operations
  shown in the figure below,
  which yield a great configuration whose odd entries
  are $a$, $b$, $|c-2a|$.

  \begin{center}
  \begin{asy}
  size(12.5cm);
  picture[] h = new picture[5];
  h[0] = new picture;
  h[1] = new picture;
  h[2] = new picture;
  h[3] = new picture;
  h[4] = new picture;

  pen cu = blue + fontsize(9pt);
  pen cd = deepgreen + fontsize(7pt);
  pen mu = red + fontsize(9pt);
  pen md = red + fontsize(9pt);

  for (int i=0; i<=4; ++i) {
  draw(h[i], dir(30)--dir(150)--dir(270)--cycle, cd);
  draw(h[i], dir(90)--dir(210)--dir(330)--cycle, cu);
  draw(h[i], dir(30)--dir(90)--dir(150)--dir(210)--dir(270)--dir(330)--cycle, lightgray);
  }

  label(h[0], "$a$", dir(90), dir(90), cu);
  label(h[0], "$b-a$", dir(150), dir(150), cd);
  label(h[0], "$b$", dir(210), dir(210), cu);
  label(h[0], "$c-b$", dir(270), dir(270), cd);
  label(h[0], "$c$", dir(330), dir(330), cu);
  label(h[0], "$c-a$", dir(30), dir(30), cd);

  label(h[1], "$a$", dir(90), dir(90), cu);
  label(h[1], "$b-a$", dir(150), dir(150), cd);
  label(h[1], "$b$", dir(210), dir(210), cu);
  label(h[1], "$c-b$", dir(270), dir(270), cd);
  label(h[1], "$b-a$", dir(330), dir(330), mu);
  label(h[1], "$c-a$", dir(30), dir(30), cd);

  label(h[2], "$a$", dir(90), dir(90), cu);
  label(h[2], "$b-a$", dir(150), dir(150), cd);
  label(h[2], "$b$", dir(210), dir(210), cu);
  label(h[2], "$a$", dir(270), dir(270), md);
  label(h[2], "$b-a$", dir(330), dir(330), cu);
  label(h[2], "$c-a$", dir(30), dir(30), cd);

  label(h[3], "$a$", dir(90), dir(90), cu);
  label(h[3], "$b-a$", dir(150), dir(150), cd);
  label(h[3], "$b$", dir(210), dir(210), cu);
  label(h[3], "$a$", dir(270), dir(270), cd);
  label(h[3], "$|c-2a|$", dir(330), dir(330), mu);
  label(h[3], "$c-a$", dir(30), dir(30), cd);

  label(h[4], "$a$", dir(90), dir(90), cu);
  label(h[4], "$b$", dir(210), dir(210), cu);
  label(h[4], "$|c-2a|$", dir(330), dir(330), cu);

  add(shift(0,3)*h[0]);
  add(shift(4,3)*h[1]);
  add(shift(8,3)*h[2]);
  add(shift(2,0)*h[3]);
  add(shift(6,0)*h[4]);
  \end{asy}
  \end{center}

  Since $|c-2a| < c$ unless $a=b=c$,
  this decreases the sum.
  So an induction now completes the problem.
%  This is annoying, but straightforward.
%  Our standing assumption is $a \neq c$ (but possibly $b=c$).
%  It's already obvious that $|c-2a| < c$,
%  so focus on the last term.
%  If $c > 2b$, then $\left\lvert (c-2b)-(c-a) \right\rvert =
%  \left\lvert 2b-a \right\rvert < c$ as well for $a \neq c$.
%  When $c \le 2b$ we instead have
%  $\left\lvert (2b-c)-(c-a) \right\rvert
%  \le \max \left( 2b-c, c-a \right)$
%  with equality if and only if $c-a = 0$; but $2b-c \le c$ as needed.
%  Thus, in all situations we have
%  \[ c \neq a \implies
%    \max\left( \left\lvert \left\lvert c-2b \right\rvert - (c-a)
%    \right\rvert, \left\lvert c-2a \right\rvert \right) < c. \]
%  Now denote the new odd entries by $a' \le b' \le c'$ (in some order).
%  If $b < c$ then $c' < c$,
%  while if $b = c$ then $c' = b$ but $b' < c = b$.
%  Thus $(c', b', a')$ precedes $(c, b, a)$ lexicographically, and we
%  can induct down.
\end{proof}

\begin{remark*}
  One simple idea might be to try to overwrite
  the maximum number at each point, decreasing the sum.
  However, this fails on the arrangement $(t,t,0,t,t,0)$.

  Unfortunately, this issue is actually fatal,
  as the problem has a hidden parity obstruction.
  The configuration $(1,1,0,1,1,0) \bmod 2$ is invariant modulo $2$,
  and so Bert can walk into a ``fatal death-trap'' of this shape
  long before the numbers start becoming equal/zero/etc.
  In other words, you can mess up on the first move!
  This is why the initial sum is given to be odd;
  however, it's not possible for Bert to win
  so one essentially has to ``tip-toe'' around the $110110$ trap
  any time one leaves the space of odd sum.
  That's why the great configurations defined above serve as an anchor,
  making sure we never veer too far from the
  safe $101010$ configuration.
\end{remark*}

\begin{remark*}
  On the other hand, many other approaches are possible
  which anchor around a different parity configuration,
  like $100000$ for example.
  The choice of $101010$ by me is due to symmetry --- ostensibly,
  if it worked, there should be fewer cases.
\end{remark*}