#include <stdio.h>
//#include <string.h>

//long mrowa[300001][3];
//long od_lewej,od_prawej,stop=0,dobrze;
//char znak;

char kierunek[300001];
long LM;
long drugi[300001];
long trzeci[300001];


int main()
{
scanf("%ld",&LM);
scanf("%s",&kierunek);

//LM=6;   strcpy(kierunek, "LPPLPL" );  // Odp: 0 1 3 3 2 1
//LM=26;  strcpy(kierunek, "LPPLPPPLLPLPLPLPLPPLLPPPPL"); // Odp: 0 1 3 4 5 7 9 10 10 11 12 12 11 10 9 8 7 6 6 5 3 2 2 2 2 1
//LM=13;  strcpy(kierunek, "LPLPLPPPPPPPL"); // Odp: 0 1 2 3 3 2 2 2 2 2 2 2 1
//LM=20;  strcpy(kierunek, "LLLPPPLLLPPLPPLLLLPL"); // Odp:

/*
od_lewej=1;
od_prawej=LM;

for (long ii=1; ii<=LM; ii++)
	{
	 if (kierunek[ii-1] == 'L') mrowa[ii][0]=-1; // Kierunek
	 else mrowa[ii][0]=1; // Kierunek
	 
	 mrowa[ii][1]=2*ii; // Pozycja mrówki
	 mrowa[ii][2]=0; // Odbicia
	}

while (!stop)
	{
	 for (int ii=od_lewej; ii<=od_prawej; ii++) mrowa[ii][1] += mrowa[ii][0]; // Przesunięcie mrówek
	 
//	 printf("Po przesunieciu, pozycje (od %ld do %ld):\n",od_lewej,od_prawej);
//	 for (int ii=od_lewej; ii<=od_prawej; ii++) printf("%ld ",mrowa[ii][1]);
//	 printf("\nKierunki:\n");
//	 for (int ii=od_lewej; ii<=od_prawej; ii++) printf("%ld ",mrowa[ii][0]);
	 
	 
	 for (int ii=od_lewej; ii<od_prawej; ii++)   if (mrowa[ii][1] == mrowa[ii+1][1] )   // Sprawdzenie, czy się odbijają:
	 	{// Odbicie:
	 	mrowa[ii][2]++;   mrowa[ii+1][2]++;
	 	mrowa[ii][0] *= -1;    mrowa[ii+1][0] *= -1;
	 	}
	 
//	 printf("\nPo sprawdzeniu odbić, kierunki (od %ld do %ld):\n",od_lewej,od_prawej);
//	 for (int ii=od_lewej; ii<=od_prawej; ii++) printf("%ld ",mrowa[ii][0]);
	 
	 
	 // Sprawdzam, czy tę mrówkę już odpuścić:
	 while (mrowa[od_lewej][0] == -1) od_lewej++;
	 while (mrowa[od_prawej][0] == 1) od_prawej--;
	 
//	 printf("\nPo odrzuceniu na granicach: od %ld do %ld.\n",od_lewej,od_prawej);
//	 printf("\nPodaj znak :)\n");
//	 scanf("%c",&znak);
	 
	 if (od_lewej>od_prawej) stop=1;
	}

//printf("Odbicia:\n");
for (int ii=1; ii<=LM; ii++)  printf("%ld ",mrowa[ii][2]);

*/

//// DRUGI SPOSÓB:
if (kierunek[0]=='L') drugi[1]=0;
if (kierunek[0]=='P') drugi[1]=1;

for (int ii=2; ii<=LM; ii++)    
	{
	 if ((kierunek[ii-2]=='L')&&(kierunek[ii-1]=='P')) drugi[ii]=drugi[ii-1]+1;
	 else if ((kierunek[ii-2]=='L')&&(kierunek[ii-1]=='L')) drugi[ii]=drugi[ii-1];
	 else if ((kierunek[ii-2]=='P')&&(kierunek[ii-1]=='P')) drugi[ii]=drugi[ii-1]+2;
	 else if ((kierunek[ii-2]=='P')&&(kierunek[ii-1]=='L')) drugi[ii]=drugi[ii-1]+1;
	}

if (kierunek[LM-1]=='P') trzeci[LM]=0;
if (kierunek[LM-1]=='L') trzeci[LM]=1;

for (int ii=LM-1; ii>=1; ii--)
	{
	 if ((kierunek[ii-1]=='L')&&(kierunek[ii]=='P')) trzeci[ii] = trzeci[ii+1] + 1;
	 else if ((kierunek[ii-1]=='P')&&(kierunek[ii]=='P')) trzeci[ii] = trzeci[ii+1];
	 else if ((kierunek[ii-1]=='L')&&(kierunek[ii]=='L')) trzeci[ii] = trzeci[ii+1] + 2;
	 else if ((kierunek[ii-1]=='P')&&(kierunek[ii]=='L')) trzeci[ii] = trzeci[ii+1] + 1;
	}

/*
for (int ii=1; ii<=LM; ii++) if(trzeci[ii]<drugi[ii]) drugi[ii]=trzeci[ii];

dobrze=1;
for (int ii=1; ii<=LM; ii++) if(mrowa[ii][2] != drugi[ii]) dobrze=0;

if (dobrze==1) printf("DOBRZE :)\n");
else printf("ZLE :(\n");
*/
for (int ii=1; ii<=LM; ii++)
	{
	 if (drugi[ii]<trzeci[ii]) printf("%d ",drugi[ii]);
	 else printf("%d ",trzeci[ii]);
	}


return 0;
}




