induction l1; intros.
destruct l2; simpl in L. trivial. omega.
destruct l2; simpl in L. omega.
rewrite (IHl1 l2) with (d:=d).
specialize (N O). simpl in N. rewrite N; trivial. omega.
omega.
intros. apply (N (S i)). simpl; omega.
Qed.

Lemma listGE16 {A} (l:list A): 16 <= Zlength l ->
exists v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15 t,
l = [v0; v1; v2; v3; v4; v5; v6; v7; v8; v9; v10; v11; v12; v13; v14; v15] ++ t
/\ Zlength t = Zlength l - 16.