#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX 2000


void eoi(char *strin)
{
 int l, n;
 l = strlen(strin);
 for (n=1; n<=l; n++)
 {
  if ((*(strin+n) == '/') && (*(strin+n-1) == '/')  )
  {
   st(strin+n-1);
   --n;
  }
  if ( (*(strin+n) == '.') && (*(strin+n-1) == '/') && (*(strin+n+1) == '/') )
  {
   st(&(strin+n));
   st(&(strin+n));
   --n;
  }
 }
 l = strlen(strin);
 if ( *(strin+l-1) == '/' ) st(strin+l-1);
}


void st(char *path);
{
 char ch; int i=1;
 do
 {
  ch = path[i];
  path[i-1] = ch;
  ++i;
 }
 while (ch != '\0');
}

void mn (char * strin, const char * d, const char * t)
{
  char v[MAX],*m,*p;
	if (*strin=='.')
	{
	strcpy(v,strin+1);
    strcpy(strin,t);
    strcat(strin,v);
	}
	if (*strin=='~')
	{
    strcpy(v,strin+1);
    strcpy(strin,d);
    strcat(strin,v);
	}

 eoi(strin) ;
 m=strin;

 while (*m!='\0')
  {
    if ((*(m)=='/') && (*(m+1)=='.') && (*(m+2)=='.') && (*(m+3)!='/') && (*(m+3)!='\0'))
    {
      if (m!=strin)
      {
       p=m-1;
       while (*p!='/') p--;
       p++;
      }
      else p=m;
      strcpy(v,m+3);
      strcpy(p,v);
      eoi(strin);
      m=strin;
    }
    else m++;
  }
  m=strin;
  while (*m!='\0')
  m++;
  m--;
  if ((*m=='/') && (m!=strin)) *m='\0';

}


void iput (char * s);
{
  char c;
  do
  {
    c=getchar();
    if (c!='\n')
		{
		*s=c;
		s++;
		}
  }
  while (c!='\n');
  *s='\0';
}


int prov (char * s)
{
  char *v=s;
  if (*s=='/') s++;
  else return 0;

  while ((*s!='/') && (*s!='.') && (*s!='\0')) s++;

  if ((*s=='/') && (s==(v+1))) return 0;
  if (*s=='/')  return prov(s);
  if (*s=='.') return  0;
  return(1);
}


int main (void)
{
int i=0,j=0;
char c,*le,d[200],t[200],s[MAX],l[MAX],e1[]={"1 or more of strings are void"},e2[]={"Home dir is bad"},e3[]={"Tmp dir is bad"};

le=l;
iput(d);
iput(t);
iput(s);
iput(l);
if ((*d=='\0') || (*t=='\0') || (*s=='\0') || (*l=='\0'))
{
  printf("ERROR");
  fprintf(stderr,  e1);
}
else if((*d)!='/')
{
  printf("ERROR");
  fprintf(stderr,  e2);
}
else if((*t)!='/')
{
  printf("ERROR");
  fprintf(stderr,  e3);
}
else
{
mn(d,d,t);
mn(t,d,t);
mn(s,d,t);
mn(l,d,t);
/*
printf("%s\n%s\n",s,l);
*/
if ((strstr(s,l)==s) && (strlen(s)==strlen(l))) printf("YES");
else printf("NO");
}
return 0;
}
