var n;

fun collect_ints_acc (v, tail) {
  var i;
  case v of
    a@#val ->  Cons (a, tail)
  | #str   ->  tail
  | _       ->
     for i := 0, i < v.length, i := i + 1 do
       tail := collect_ints_acc (v[i], tail)
     od;
      tail
  esac
}

fun collect_ints (v) {
   collect_ints_acc (v, Nil)
}

fun print_list (l) {
  case l of
    Nil         -> skip
  | Cons (n, t) -> write (n); print_list (t)
  esac
}

n := read ();

case 1 of
  5 -> write (5) 
| 4 -> write (4)
| 3 -> write (3)
| 2 -> write (2)
| 1 -> write (1)
| 0 -> write (0) 
esac;

case 1 of
  a@5 -> write (a) 
| a@4 -> write (a)
| a@3 -> write (a)
| a@2 -> write (a)
| a@1 -> write (a)
| a@0 -> write (a)
esac;

case A (1, 2, 3) of
  A (1, 3, 5) -> write (0)
| A (3, 4, 5) -> write (0)
| A (1, 2, 3) -> write (1)
| A (6, 7, 8) -> write (0)
esac;

case "abc" of
  "def" -> write (0)
| "ab"  -> write (0)
| "abc" -> write (1)
| ""    -> write (0)
esac;

case [1, 2, 3] of
  []        -> write (0)
| [a, b]    -> write (0)
| [a, b, c] -> write (a); write (b); write (c)
| [_, _, _] -> write (0)
esac;

case [1, 2, 3] of
  []        -> write (0)
| [a, b]    -> write (0)
| [_, _, _] -> write (100)
| [a, b, c] -> write (a); write (b); write (c)
esac;

print_list (collect_ints ([1, 2, 3, [4, 5, 6, Cons (1, 2, 3)]])) 
