Faits:
Faits:
A. Par jugement du 4 décembre 2003, le Tribunal correctionnel de l'arrondissement de l'Est vaudois a condamné X._, ressortissant albanais né en 1976, pour blanchiment d'argent, infraction à la loi fédérale sur le séjour et l'établissement des étrangers (LSEE) et infraction grave à la loi fédérale sur les stupéfiants (LStup), à onze ans de réclusion, sous déduction de 898 jours de détention préventive, et l'a expulsé du territoire suisse pour quinze ans. Par le même jugement, le tribunal a aussi condamné Y._, ressortissant albanais né en 1978, pour abus de la détresse, rupture de ban, blanchiment d'argent, infraction à la LSEE et infraction grave à la LStup, à onze ans de réclusion, sous déduction de 898 jours de détention préventive, et a ordonné son expulsion à vie du territoire suisse. Il ressort notamment ce qui suit de ce jugement:
X._ et Y._ ont participé à un important trafic de stupéfiants dans la région de Vevey. Après avoir mélangé de l'héroïne avec des produits de coupage et l'avoir répartie en sachet de 5 grammes, ils ont revendu la drogue directement ou par l'intermédiaire de jeunes albanais recrutés en Italie. Ils ont ainsi mis sur le marché au moins 4'260 grammes d'héroïne coupée. Ils ont également acquis 50 grammes de cocaïne et en ont vendu une quinzaine de grammes; le solde a été séquestré.
A une reprise au moins, Y._ a profité de la situation financière précaire et de l'état de manque de la dénommée Z._ pour entretenir avec elle des relations sexuelles dans la cage d'escalier d'un immeuble, en échange de quoi il lui a remis 10 gramme d'héroïne. Il a également profité de la toxicomanie de B._ pour obtenir de celle-ci une fellation, en échange d'un rabais de 100 francs sur 5 grammes d'héroïne.
En ce qui concerne les antécédents, Y._ a été condamné le 28 août 1998 par le Tribunal correctionnel de Lausanne, pour infraction et contravention à la LStup, à huit mois d'emprisonnement et à cinq ans d'expulsion du territoire suisse. Il a ainsi été renvoyé dans son pays en novembre 1998. Il est revenu en Suisse un mois plus tard. Le Procureur général du canton de Genève l'a condamné le 15 décembre 1998, pour vol, dommages à la propriété, violation de domicile et rupture de ban, à quatre mois d'emprisonnement et à sept ans d'expulsion. Quant à X._, ses casiers judiciaires suisse et italien ne comportent aucune inscription.
En ce qui concerne les antécédents, Y._ a été condamné le 28 août 1998 par le Tribunal correctionnel de Lausanne, pour infraction et contravention à la LStup, à huit mois d'emprisonnement et à cinq ans d'expulsion du territoire suisse. Il a ainsi été renvoyé dans son pays en novembre 1998. Il est revenu en Suisse un mois plus tard. Le Procureur général du canton de Genève l'a condamné le 15 décembre 1998, pour vol, dommages à la propriété, violation de domicile et rupture de ban, à quatre mois d'emprisonnement et à sept ans d'expulsion. Quant à X._, ses casiers judiciaires suisse et italien ne comportent aucune inscription.
B. Par arrêt du 11 mars 2004, la Cour de cassation pénale du Tribunal cantonal vaudois a rejeté le recours de X._ et a confirmé le jugement de première instance. Par le même arrêt, elle a aussi rejeté le recours de Y._.
B. Par arrêt du 11 mars 2004, la Cour de cassation pénale du Tribunal cantonal vaudois a rejeté le recours de X._ et a confirmé le jugement de première instance. Par le même arrêt, elle a aussi rejeté le recours de Y._.
C. X._ forme un recours de droit public et un pourvoi en nullité au Tribunal fédéral contre cet arrêt. Il conclut à son annulation et sollicite par ailleurs l'assistance judiciaire.
La Cour de cassation vaudoise s'est référée à son arrêt. Le Ministère public vaudois conclut au rejet du pourvoi en nullité.

Le Tribunal fédéral considère en droit:
Le Tribunal fédéral considère en droit:
1. Conformément à l'art. 275 al. 5 PPF, le recours de droit public est examiné en premier lieu.
I. Recours de droit public
I. Recours de droit public
2. 2.1 Le recours de droit public au Tribunal fédéral est ouvert contre une décision cantonale pour violation des droits constitutionnels des citoyens (art. 84 al. 1 let. a OJ). Il n'est en revanche pas ouvert pour se plaindre d'une violation du droit fédéral, qui peut donner lieu à un pourvoi en nullité (art. 269 al. 1 PPF); un tel grief ne peut donc pas être invoqué dans le cadre d'un recours de droit public, qui est subsidiaire (art. 84 al. 2 OJ; art. 269 al. 2 PPF).
2.2 En vertu de l'art. 90 al. 1 let. b OJ, l'acte de recours doit, à peine d'irrecevabilité, contenir un exposé succinct des droits constitutionnels ou des principes juridiques violés et préciser en quoi consiste la violation. Saisi d'un recours de droit public, le Tribunal fédéral n'a donc pas à vérifier de lui-même si la décision attaquée est en tous points conforme au droit ou à l'équité. Il n'examine que les griefs d'ordre constitutionnel invoqués et suffisamment motivés dans l'acte de recours. Le recourant ne saurait se contenter de soulever de vagues griefs ou de renvoyer aux actes cantonaux (<ref-ruling> consid. 1.6 p. 189, 113 consid. 2.1 p. 120; <ref-ruling> consid. 1c p. 76). Le Tribunal fédéral n'entre pas non plus en matière sur les critiques de nature appellatoire (<ref-ruling> consid. 1b p. 495).
2.2 En vertu de l'art. 90 al. 1 let. b OJ, l'acte de recours doit, à peine d'irrecevabilité, contenir un exposé succinct des droits constitutionnels ou des principes juridiques violés et préciser en quoi consiste la violation. Saisi d'un recours de droit public, le Tribunal fédéral n'a donc pas à vérifier de lui-même si la décision attaquée est en tous points conforme au droit ou à l'équité. Il n'examine que les griefs d'ordre constitutionnel invoqués et suffisamment motivés dans l'acte de recours. Le recourant ne saurait se contenter de soulever de vagues griefs ou de renvoyer aux actes cantonaux (<ref-ruling> consid. 1.6 p. 189, 113 consid. 2.1 p. 120; <ref-ruling> consid. 1c p. 76). Le Tribunal fédéral n'entre pas non plus en matière sur les critiques de nature appellatoire (<ref-ruling> consid. 1b p. 495).
3. Le recourant se plaint de l'établissement des faits. Il invoque à ce propos la violation de la présomption d'innocence (ou de la maxime "in dubio pro reo") et l'arbitraire dans l'appréciation des preuves.
Consacrée par les art. 32 al. 1 Cst. et 6 par. 2 CEDH, la présomption d'innocence interdit au juge de prononcer une condamnation alors qu'il éprouve des doutes sur la culpabilité de l'accusé. Des doutes abstraits ou théoriques, qui sont toujours possibles, ne suffisent cependant pas à exclure une condamnation. Pour invoquer utilement la présomption d'innocence, le condamné doit donc démontrer que le juge de la cause pénale, à l'issue d'une appréciation exempte d'arbitraire de l'ensemble des preuves à sa disposition, aurait dû éprouver des doutes sérieux et irréductibles au sujet de la culpabilité (<ref-ruling> consid. 2 p. 40; <ref-ruling> consid. 2a p. 87/88; <ref-ruling> consid. 2e p. 38, consid. 4b p. 40).
Une décision est arbitraire, donc contraire à l'art. 9 Cst., lorsqu'elle contredit d'une manière choquante le sentiment de la justice et de l'équité. Le Tribunal fédéral n'invalide l'appréciation retenue par le juge de la cause que si elle apparaît insoutenable, en contradiction manifeste avec la situation effective ou adoptée sans motifs objectifs. Il ne suffit pas que les motifs du verdict soient insoutenables; il faut en outre que l'appréciation soit arbitraire dans son résultat (<ref-ruling> consid. 4 p. 58).
En matière d'appréciation des preuves et d'établissement des faits, la décision n'est arbitraire que si le juge n'a manifestement pas compris le sens et la portée d'un moyen de preuve, s'il a omis, sans raison sérieuse, de tenir compte d'un moyen important propre à modifier la décision attaquée ou encore si, sur la base des éléments recueillis, il a fait des déductions insoutenables (<ref-ruling> consid. 2.1 p. 9).
En matière d'appréciation des preuves et d'établissement des faits, la décision n'est arbitraire que si le juge n'a manifestement pas compris le sens et la portée d'un moyen de preuve, s'il a omis, sans raison sérieuse, de tenir compte d'un moyen important propre à modifier la décision attaquée ou encore si, sur la base des éléments recueillis, il a fait des déductions insoutenables (<ref-ruling> consid. 2.1 p. 9).
4. 4.1 Le recourant conteste d'abord avoir acheté 5 kilos d'héroïne comme cela ressort de l'arrêt attaqué (p. 2). Cette quantité ne repose selon lui sur aucun élément probant.
La critique est infondée. Il ressort certes de l'arrêt attaqué que le recourant a acquis 5 kilos d'héroïne. Toutefois, le passage incriminé est incomplet en raison d'une inadvertance rédactionnelle. Ce passage n'est en effet pas censé s'écarter du jugement de première instance, mais doit uniquement en reprendre la substance. L'arrêt attaqué le précise expressément en introduction de l'exposé des faits. Or, le jugement de première instance (p. 12) mentionne simplement que, selon l'ordonnance de renvoi, le recourant et son coaccusé Y._ ont acquis 5 kilos d'héroïne. En revanche, il n'en ressort pas que le contenu de ladite ordonnance de renvoi est tenu pour établi en ce qui concerne les 5 kilos d'héroïne. Au contraire, le Tribunal correctionnel s'est déclaré convaincu que le recourant était impliqué pour 4'260 grammes d'héroïne (cf. jugement de première instance, p. 15). C'est la même quantité qui est prise en considération dans l'arrêt attaqué (p. 9/10). Il n'apparaît donc pas, malgré l'inadvertance rédactionnelle en page 2 de l'arrêt attaqué, qu'une quantité de 5 kilos d'héroïne aurait été imputée au recourant.
4.2 Le recourant conteste avoir vendu 4'260 grammes d'héroïne. Il met en cause le calcul auquel a procédé la Cour de cassation vaudoise. Il se prévaut aussi du fait que son coaccusé Y._ est revenu sur ses premières déclarations pour finalement admettre que lui et le recourant avaient vendu 2'895 grammes au plus.
Selon les aveux de Y._ juste après son arrestation, il a revendu avec le recourant entre 3,8 et 4,3 kilos d'héroïne. Lors des auditions ultérieures, Y._ est revenu sur ses déclarations initiales et a uniquement reconnu un trafic portant sur 2'895 grammes. Le Tribunal correctionnel a prêté foi aux premières déclarations de Y._. Il a à cet égard exposé que celui-ci avait initialement fourni des indications claires et que la diminution de la quantité trafiquée résultait de sa conscience progressive des enjeux judiciaires. Ces explications sont convaincantes. Le recourant se contente de leur opposer sa propre version au travers d'une libre discussion des faits. L'argumentation qu'il développe est appellatoire, partant, irrecevable (consid. 2.2).
La Cour de cassation vaudoise a admis que le Tribunal correctionnel n'avait pas précisé comment il parvenait à 4'260 grammes d'héroïne. Elle a ainsi complété l'état de fait en application des art. 433a al. 1 et 444 al. 2 du Code de procédure pénal vaudois et a fourni le détail du calcul aboutissant à 4'260 grammes. Le recourant affirme que la Cour de cassation vaudoise a de la sorte tenté de trouver a posteriori une justification à la quantité de drogue retenue. Il discute librement du mode de calcul, mais ne tente pas de démontrer précisément en quoi le raisonnement suivi par la Cour de cassation vaudoise serait entaché d'arbitraire. La motivation qu'il présente est insuffisante au regard des exigences minimales de l'art. 90 al. 1 let. b OJ. Elle est irrecevable.
Le recourant met encore en cause l'un des éléments du calcul pris en compte par la Cour de cassation vaudoise (27,4 grammes séquestrés à Vevey). L'argument tombe à faux. En effet, la quantité de drogue en cause perd de l'importance pour fixer la peine lorsque, comme c'est le cas en l'espèce, la limite du cas grave est déjà largement dépassée (<ref-ruling> consid. 2b/aa p. 196). Le fait qu'une éventuelle erreur pourrait conduire à retrancher quelques grammes n'est par conséquent de toute façon pas de nature à faire apparaître la solution retenue comme arbitraire dans son résultat.
4.3 Le recourant juge encore arbitraire la considération selon laquelle il s'est montré hermétique à l'intervention de la justice ou celle selon laquelle il a fait montre de mépris envers l'autorité.
Le Tribunal correctionnel a mentionné que le recourant était adepte de dénégations ridicules au regard des éléments de preuve disponibles et qu'il n'avait même pas daigné donner sa véritable identité au juge d'instruction. Le recourant reconnaît lui-même dans son mémoire qu'"il a parfois nié des faits dûment établis par l'enquête". A partir de là, il n'était pas insoutenable d'opposer au recourant sa mauvaise foi en procédure. Les remarques du Tribunal correctionnel sont ainsi exemptes d'arbitraire.
Le Tribunal correctionnel a mentionné que le recourant était adepte de dénégations ridicules au regard des éléments de preuve disponibles et qu'il n'avait même pas daigné donner sa véritable identité au juge d'instruction. Le recourant reconnaît lui-même dans son mémoire qu'"il a parfois nié des faits dûment établis par l'enquête". A partir de là, il n'était pas insoutenable d'opposer au recourant sa mauvaise foi en procédure. Les remarques du Tribunal correctionnel sont ainsi exemptes d'arbitraire.
5. Le recours de droit public était d'emblée dépourvu de chances de succès. La requête d'assistance judiciaire doit ainsi être rejetée (art. 152 al. 1 OJ). Le recourant, qui succombe, supporte les frais relatifs à ce recours (art. 156 al. 1 OJ), lesquels sont fixés de manière réduite pour tenir compte de sa mauvaise situation financière.
II. Pourvoi en nullité
II. Pourvoi en nullité
6. Saisi d'un pourvoi en nullité, le Tribunal fédéral contrôle l'application du droit fédéral (art. 269 PPF) sur la base d'un état de fait définitivement arrêté par l'autorité cantonale (cf. art. 273 al. 1 let. b et 277bis al. 1 PPF). Il ne peut donc pas revoir les faits retenus dans la décision attaquée ni la manière dont ils ont été établis, de sorte que ces points, sous peine d'irrecevabilité, ne peuvent pas être remis en cause dans le pourvoi (<ref-ruling> consid. 1 p. 66/67).
6. Saisi d'un pourvoi en nullité, le Tribunal fédéral contrôle l'application du droit fédéral (art. 269 PPF) sur la base d'un état de fait définitivement arrêté par l'autorité cantonale (cf. art. 273 al. 1 let. b et 277bis al. 1 PPF). Il ne peut donc pas revoir les faits retenus dans la décision attaquée ni la manière dont ils ont été établis, de sorte que ces points, sous peine d'irrecevabilité, ne peuvent pas être remis en cause dans le pourvoi (<ref-ruling> consid. 1 p. 66/67).
7. Invoquant une violation de l'<ref-law>, le recourant se plaint de la peine infligée.
7.1 Les critères en matière de fixation de la peine ont été rappelés à l'arrêt publié aux <ref-ruling>. Il convient de s'y référer.
7.2 Selon le recourant, trop de poids a été accordé à son absence de collaboration lors de l'enquête.
Dans la mesure où le recourant remet en cause les faits constatés, son argumentation est irrecevable. Le droit fédéral n'exclut pas la prise en compte au stade de la fixation de la peine, c'est-à-dire une fois la culpabilité de l'accusé établie, de l'attitude de celui-ci en cours de procédure (<ref-ruling> consid. 2b p. 25). On déduit des constatations cantonales que le recourant a persisté à nier l'évidence. L'autorité cantonale n'a pas violé l'<ref-law> en reprochant au recourant son attitude négative lors de l'enquête. Savoir quel poids accorder à cet élément est une pure question d'appréciation, à l'égard de laquelle l'autorité cantonale dispose d'un large pouvoir.
7.3 Le recourant est d'avis que son jeune âge n'a pas été pris en compte.
L'argument est infondé. Il ressort du jugement de première instance (p. 9) que le recourant est né en 1976. On ne saurait par conséquent conclure que cet élément a été omis. De plus, cet élément n'était pas d'une importance telle dans le cas d'espèce qu'il s'imposait de l'évoquer une fois encore expressément au stade de la discussion sur la peine.
7.4 Le recourant se plaint d'une inégalité de traitement avec son coaccusé. Il n'aurait pas dû être condamné à une peine identique à celle infligée à celui-ci, mais inférieure.
Dans le contexte de la fixation de la peine, il est possible de faire valoir une inégalité de traitement (<ref-ruling> consid. 3a p. 144). Les disparités en matière de fixation de la peine s'expliquent normalement par le principe de l'individualisation des peines (<ref-ruling> consid. 2c p. 47). Néanmoins, l'idée de ne pas créer un écart trop important entre deux coaccusés qui ont participé ensemble au même complexe de faits délictueux est soutenable (<ref-ruling> consid. 2b p. 154).
Il ressort des constatations cantonales que le recourant n'a pas d'antécédents. Son coaccusé a déjà subi deux condamnations en Suisse et a commis les présentes infractions en état de récidive (<ref-law>). Celui-ci a bien collaboré au début de l'enquête mais est ensuite revenu sur ses déclarations. Outre les infractions qui se recoupent avec celles retenues à l'encontre du recourant, le coaccusé a également été condamné pour abus de la détresse et rupture de ban.
Le Tribunal correctionnel a justifié la peine de réclusion identique infligée au recourant en raison de son attitude négative lors de l'enquête. La Cour de cassation vaudoise a relevé que le coaccusé était certes en état de récidive et qu'il avait commis plus d'infractions que le recourant, mais a souligné sa bonne collaboration en début d'enquête alors que le recourant avait appliqué la loi du silence et s'était montré méprisant envers les enquêteurs, allant jusqu'à refuser de donner sa véritable identité. Elle a ajouté que l'effet aggravant du concours d'infractions retenues à la charge des coaccusés ne justifiait pas de différencier les peines car la culpabilité était principalement déterminée, selon l'<ref-law>, par l'infraction la plus grave, soit l'infraction commune à la LStup.
Dans sa détermination, le Ministère public veut imputer un rôle plus important au recourant pour ce qui concerne les infractions communes (blanchiment d'argent, infraction à la LSEE et infraction grave à la LStup). Il relève en particulier que celui-ci surveillait l'activité des revendeurs et qu'il a fait venir ces derniers depuis l'Italie. Cette motivation se heurte aux constatations cantonales. Le Tribunal correctionnel a en effet mentionné que le rôle des coaccusés était interchangeable et que leur trafic était entièrement commun (cf. jugement de première instance, p. 14). La Cour de cassation vaudoise a aussi imputé au coaccusé le fait d'avoir fait venir des revendeurs depuis l'étranger (cf. arrêt attaqué, p. 16). Les constatations cantonales ne permettent pas non plus de distinguer de manière significative la culpabilité des coaccusés pour les opérations de blanchiment (23'000 francs au profit du recourant, 16'000 francs au profit du coaccusé; cf. jugement de première instance, p. 16/17). Il faut donc conclure que le recourant et son coaccusé ont joué un rôle similaire dans la commission des infractions communes.
Le coaccusé a agi en état de récidive et a commis des infractions supplémentaires par rapport au recourant. La bonne attitude du coaccusé au début de l'enquête peut compenser une circonstance aggravante, telle la récidive. De même, en comparaison, l'absence d'antécédents du recourant contrebalance dans une certaine mesure son mauvais comportement lors de l'enquête. Cependant, dans le cas d'espèce, la seule attitude positive du coaccusé au début de l'enquête ne permet pas de compenser tous les éléments aggravants à sa charge et d'expliquer l'identité des peines infligées. En particulier, les autres infractions imputées au coaccusé ne sauraient être qualifiées de négligeables. Conformément à l'<ref-law> et contrairement à ce que paraît supposer la Cour de cassation vaudoise, elles doivent être sanctionnées par une augmentation de la peine. Il apparaît ainsi légitime de réprimer plus lourdement le coaccusé par rapport au recourant. Comme le relève le recourant, le Ministère public avait d'ailleurs requis des peines différenciées aux débats (cf. jugement de première instance, p. 6). En infligeant une même sanction, l'autorité cantonale a violé l'égalité de traitement entre coaccusés. L'identité des peines revient en effet, compte tenu des infractions en cause, à réprimer plus sévèrement le recourant, sans raison valable dans les circonstances d'espèce. A cet égard, le pourvoi doit être admis.
Le coaccusé a agi en état de récidive et a commis des infractions supplémentaires par rapport au recourant. La bonne attitude du coaccusé au début de l'enquête peut compenser une circonstance aggravante, telle la récidive. De même, en comparaison, l'absence d'antécédents du recourant contrebalance dans une certaine mesure son mauvais comportement lors de l'enquête. Cependant, dans le cas d'espèce, la seule attitude positive du coaccusé au début de l'enquête ne permet pas de compenser tous les éléments aggravants à sa charge et d'expliquer l'identité des peines infligées. En particulier, les autres infractions imputées au coaccusé ne sauraient être qualifiées de négligeables. Conformément à l'<ref-law> et contrairement à ce que paraît supposer la Cour de cassation vaudoise, elles doivent être sanctionnées par une augmentation de la peine. Il apparaît ainsi légitime de réprimer plus lourdement le coaccusé par rapport au recourant. Comme le relève le recourant, le Ministère public avait d'ailleurs requis des peines différenciées aux débats (cf. jugement de première instance, p. 6). En infligeant une même sanction, l'autorité cantonale a violé l'égalité de traitement entre coaccusés. L'identité des peines revient en effet, compte tenu des infractions en cause, à réprimer plus sévèrement le recourant, sans raison valable dans les circonstances d'espèce. A cet égard, le pourvoi doit être admis.
8. Vu l'issue du pourvoi, il ne sera pas perçu de frais et une indemnité de dépens sera allouée au mandataire du recourant pour la procédure devant le Tribunal fédéral (art. 278 al. 3 PPF). La requête d'assistance judiciaire devient ainsi sans objet.

Par ces motifs, le Tribunal fédéral prononce:
Par ces motifs, le Tribunal fédéral prononce:
1. Le recours de droit public est rejeté dans la mesure où il est recevable.
1. Le recours de droit public est rejeté dans la mesure où il est recevable.
2. Le pourvoi en nullité est admis, l'arrêt attaqué est annulé et la cause est renvoyée à l'autorité cantonale pour nouvelle décision.
2. Le pourvoi en nullité est admis, l'arrêt attaqué est annulé et la cause est renvoyée à l'autorité cantonale pour nouvelle décision.
3. La requête d'assistance judiciaire est rejetée s'agissant du recours de droit public. Elle est sans objet en ce qui concerne le pourvoi en nullité.
3. La requête d'assistance judiciaire est rejetée s'agissant du recours de droit public. Elle est sans objet en ce qui concerne le pourvoi en nullité.
4. Un émolument judiciaire de 800 francs est mis à la charge du recourant pour le recours de droit public.
4. Un émolument judiciaire de 800 francs est mis à la charge du recourant pour le recours de droit public.
5. La Caisse du Tribunal fédéral versera une indemnité de 2'000 francs au mandataire du recourant pour le pourvoi en nullité.
5. La Caisse du Tribunal fédéral versera une indemnité de 2'000 francs au mandataire du recourant pour le pourvoi en nullité.
6. Le présent arrêt est communiqué en copie au mandataire du recourant, au Ministère public du canton de Vaud et au Tribunal cantonal vaudois, Cour de cassation pénale.
Lausanne, le 16 août 2004
Au nom de la Cour de cassation pénale
du Tribunal fédéral suisse
Le président: Le greffier: