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 map_Znth {A B : Type}{d: Inhabitant A} (f : A -> B) l n: Znth n (map f l) = f (Znth n l). *)
Lemma listD16 {A} (l:list A): Zlength l = 16 ->
exists v0 v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15,
l = [v0; v1; v2; v3; v4; v5; v6; v7; v8; v9; v10; v11; v12; v13; v14; v15].