Faits : A. Par jugement du 14 octobre 2015, le Tribunal correctionnel du canton de Genève a condamné X._ pour infraction grave à la loi fédérale sur les stupéfiants (art. 19 al. 1 et 2 let. a LStup) et pour entrée illégale et séjour illégal (art. 115 al. 1 let. a et b LEtr) à une peine privative de liberté de quatre ans et neuf mois, sous déduction de 408 jours de détention avant jugement. B. Par arrêt du 18 mars 2016, la Chambre pénale d'appel et de révision de la Cour de justice genevoise a rejeté l'appel formé par X._. En résumé, elle a retenu les faits suivants: Le 11 août 2014, en vue de la revente à des dealers genevois, X._ a acquis, auprès du fournisseur " A._ ", 180 grammes de cocaïne qui lui ont été remis par B._ dans l'appartement qu'il occupait, sis à Genève. Le 2 septembre 2014, en vue de la revente à des dealers genevois, X._ a acquis, auprès du même fournisseur, 65 doigts de cocaïne pour un poids total net de 721,8 grammes. Au moment de l'intervention policière, B._ était en train d'expulser la drogue ingérée préalablement. Alors qu'il faisait l'objet d'une mesure d'interdiction d'entrée en Suisse depuis le 17 juin 2009 jusqu'au 31 décembre 2099, décision notifiée le 17 août 2009, X._ a pénétré sur le territoire suisse dans le courant du moins d'août 2014 et y a séjourné sans autorisation jusqu'au 2 septembre 2014, date de son interpellation. C. Contre ce dernier arrêt, X._ dépose un recours en matière pénale devant le Tribunal fédéral. Il conclut, principalement, à son acquittement; à titre subsidiaire, il sollicite une réduction de sa peine dans une proportion permettant sa mise en liberté immédiate et, à titre plus subsidiaire, il requiert l'annulation de l'arrêt attaqué et le renvoi de la cause à la cour cantonale pour nouvelle décision. En outre, il sollicite l'assistance judiciaire. Par lettre du 3 avril 2017, le recourant sollicite que le Tribunal fédéral réduise sa peine pour tenir compte des 321 jours de détention effectués dans des conditions illicites. A l'appui de cette conclusion, il produit une série de pièces complémentaires, dont une décision du 20 mars 2017 du Département genevois de la sécurité et de l'économie, admettant l'illicéité des conditions de sa détention pendant 321 nuits.