#include <bits/stdc++.h>

typedef  long long ll;
//forループ
//引数は、(ループ内変数,動く範囲)か(ループ内変数,始めの数,終わりの数)、のどちらか
//Dがついてないものはループ変数は1ずつインクリメントされ、Dがついてるものはループ変数は1ずつデクリメントされる
#define REP(i,n) for(ll i=0;i<ll(n);i++)
#define REPD(i,n) for(ll i=n-1;i>=0;i--)
#define FOR(i,a,b) for(ll i=a;i<=ll(b);i++)
#define FORD(i,a,b) for(ll i=a;i>=ll(b);i--)
//
//

using namespace std;

int ctoi(char c) {
 switch (c) {
 case '0': return 0;
 case '1': return 1;
 case '2': return 2;
 case '3': return 3;
 case '4': return 4;
 case '5': return 5;
 case '6': return 6;
 case '7': return 7;
 case '8': return 8;
 case '9': return 9;
 default: return 0;
 }
}


 long long a,b,c,s,t,x,y,z;

 long long cnt;

 long double pi=3.14159265358979323846;
 ll L=524288;

 string N,M;

unsigned long long D;

int main(){
	s=x=0;
	cin>>a>>b;
	vector<vector<ll>> t(51,vector<ll>(51));
	vector<bool> tt(50*50);
	REP(i,50){
		REP(j,50){
		cin>>t.at(i).at(j);
		tt.at(s++)=true;
	}
	}

	tt.at(t.at(a).at(b))=false;
	if(tt.at(t.at(a+1).at(b))==true&&a<49) cout<<'D';
	else if(tt.at(t.at(a).at(b+1))==true&&b<49) cout<<'R';
	else if(tt.at(t.at(a-1).at(b))==true&&a>0) cout<<'U';
	else if(tt.at(t.at(a).at(b-1))==true&&b>0) cout<<'L';
	return 0;
}

#include <bits/stdc++.h>
#pragma GCC optimize(2)
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<vector>
#include<set>
#include<map>
#include<queue>
#include<cmath>
#include<cstring>
#include<bitset>
#include<stack>
#include<time.h>



#define X first
#define Y second
#define PB push_back
#define MP make_pair
#define scd(a) scanf("%d",&a)
#define scdd(a,b) scanf("%d%d",&a,&b)
#define scddd(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define ALL(x) x.begin(),x.end()
#define sz(a) ((int)a.size())
#define getmid ((l+r)>>1)
#define mst(var,val) memset(var,val,sizeof(var))
#define IOS ios::sync_with_stdio(false);cin.tie(0)
#define lowbit(x) x&(-x)
#define rep(i,n) for(int i=0;i<n;++i)
#define rep1(i,n) for(int i=1;i<=n;++i)
#define ls rt<<1
#define rs rt<<1|1
using namespace std;
#ifdef local
#define dbg(args...) cout << #args << " -> ", err(args);
void err(){ cout << endl; }
template<typename T, typename... Args>
void err(T a, Args... args){ cout << a << ' '; err(args...); }
#else
#define dbg(args...)
#endif // local

typedef long long ll;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;
typedef pair <int, ll> pil;
typedef pair <double, double> pdd;
const int inf=0x3f3f3f3f;
const long long INF=0x3f3f3f3f3f3f3f3fLL;
const double PI=acos(-1.0);
const long double eps=1e-8;
const int mod=20000311;
const int maxn=2e5+100;
const int N=3e5+100;
const int M=(1<<20)+10;
const ll mm=(1LL<<32);

template <class T>
inline void read(T &x)
{
    x = 0;
    char c = getchar();
    bool f = 0;
    for (; !isdigit(c); c = getchar())
        f ^= c == '-';
    for (; isdigit(c); c = getchar())
        x = x * 10 + (c ^ 48);
    x = f ? -x : x;
}

template <class T>
inline void write(T x)
{
    if (x < 0)
    {
        putchar('-');
        x = -x;
    }
    T y = 1;
    int len = 1;
    for (; y <= x / 10; y *= 10)
        ++len;
    for (; len; --len, x %= y, y /= 10)
        putchar(x / y + 48);
}
ll qpow(ll a,ll b,ll mod)
{
    ll ans=1;
    while(b)
    {
        if(b&1)
            ans=(ans*a)%mod;
        b>>=1;
        a=(a*a)%mod;
    }
    return ans;
}


int cnt[300];
int num[20];
int main()
{
#ifdef local
    freopen("in.txt","r",stdin);
#endif // local
    IOS;cout.tie(0);
    int tot=0;
    string s;cin>>s;
    int n=s.size();
    rep(i,n) num[s[i]-'0']++;
    if(n==1)
    {
        if(s[0]=='8') cout<<"Yes\n";
        else cout<<"No\n";
        return 0;
    }
    else if(n==2)
    {
        for(int i=10;i<=99;++i) if(i%8==0) cnt[++tot]=i;
        int flag=0;
        for(int i=1;i<=tot;++i)
        {
            int x=cnt[i]%10,y=cnt[i]/10;
            num[x]--;num[y]--;
            if(num[x]>=0&&num[y]>=0){
                flag=1;break;
            }
            num[x]++;num[y]++;
        }
        if(flag) cout<<"Yes\n";
        else cout<<"No\n";
        return 0;
    }
    else{
        for(int i=100;i<=999;++i) if(i%8==0) cnt[++tot]=i;
        int flag=0;
        for(int i=1;i<=tot;++i)
        {
            int x=cnt[i]%10;
            int y=(cnt[i]/10)%10;
            int z=(cnt[i])/100;
            num[x]--;num[y]--;num[z]--;
            if(num[x]>=0&&num[y]>=0&&num[z]>=0)
            {
                flag=1;break;
            }
            num[x]++;num[y]++;num[z]++;
        }
        if(flag) cout<<"Yes\n";
        else cout<<"No\n";
    }
    return 0;
}

