7 7
6C 8C KH 8S 2H 7S JH
3H QC QD TS 4C QH J2
7C 6S 6D 8D 7D 4S JS
3S 3D 9S 3C J1 2D 7H
AH KD AS 9C 2S 5D QS
2C JD 8H 9D 4D 5H 5C
JC KC 6H TH TD KS TC
 7 7
2C 3C 4C 2D 3D 4D JC
5C 6C 7C 5D 6D 7D QC
8C 9C TC 8D J2 TD KC
2H 3H 4H J1 3S 4S AC
5H 6H 7H 5S 6S 7S KH
8H 9H TH 8S 9S TS AH
JD QD KD AD JH QH AS
 3 17
3H AS 2S 9C JH JD JC QH 2C QD JS TD 5C QS 4D 5S 8D
6C QC TC KS 6D 7D AH 7C 4C 5H KD 7S 3D 4H 8S 3S KH
J2 2H 9H AD 8C 8H 4S 9D TS 6S 7H 6H 9S AC 2D 3C J1
 7 7
2C J2 5D 3C AH 6S 8H
TD 7S QD TC AD 5C 3H
3D 4H 6C 2S AC AS 7H
JS 9H JD 6D 7C 9S KS
6H 9C QC 8S 9D 4D QS
4S 5H 5S 8D JH 8C 2D
KC 4C TS TH 3S 7D QH
 7 7
QS 5C 2H JC 6C TD 2S
JD 9D 9S 7S 3H 9H 4D
AD 5H AS JH KC 5D QH
3S 8S 8H 4H AC 6D TC
2C KH TH 3C 7C JS 8C
4C 6S QC 6H 3D 7H KD
7D AH 8D TS QD 2D 4S
 6 6
J1 2D 3D 3C QH KH
4D 5D 6D AH TS QS
7D 8D JD KS AS 9S
TD 5C QD 9H TC QC
TH AD 9C KC AC 2C
KD 4C 9D 6C 7C 8C
 7 3
3H J2 4H
5H 6H 7H
8H 9H TH
2S 3S TS
2D 3D 4D
5D 6D 7D
AD KD QD
 3 3
9C TH JS
AH J1 AD
3D 4D 9D
 3 6
2H 3H 4H 5H 2S 3S
6H 7H 8H 9H 4S 5S
TH JH QH KH 6S 7S
 17 3
TH QD TC
AD 6C TS
KS 7H KC
9H 3S 2S
4D 3D 5H
4C 4S 9S
QH 2C KH
6H 8H JH
J1 5C KD
9D J2 JS
7D 9C JD
TD QS 2D
AS 3C QC
5D 8D 8S
3H 7C 8C
5S JC 2H
4H 7S 6D
 5 5
KH J2 JH 8C 5H
7S KC AC 2S KD
7H TS 6D 5C 8H
QD 2H JC QH 3S
6H TD 4H J1 8S
 3 3
4C 2C 3H
8D 8C 5S
AC 7H QH
 3 14
KH 8H 2H 2C 5C AH 2D 5D 8D 2S 5S KC 8S 5H
QH 9H 3H 3C 6C AC 3D 6D AD 3S 6S 9S JS 6H
JH TH 4H 4C 7C TC 4D 7D AS 4S 7S KS QS 7H
 7 7
2C 3C 4C 2D 3D 4D JC
5C 6C J2 5D 6D 7D QC
8C 9C TC 8D 9D TD KC
2H 3H 4H 2S 3S 4S AC
5H 6H 7H 5S 6S 7S KH
8H 9H TH 8S 9S TS AH
JD QD KD AD JH QH AS
 7 7
2C 3C 4C 2D 3D 4D JC
5C 6C 7C 5D 6D 7D QC
8C 9C TC 8D 9D TD KC
2H 3H 4H 2S 3S 4S AC
5H 6H 7H 5S 6S 7S KH
8H 9H TH 8S 9S TS AH
JD QD KD AD JH QH AS
 13 3
TH 9H 8H
7H 6H 5H
JH 3H 4H
2C 3C 4C
AH 6C 7C
8C 9C AS
2D 3D 4D
5D 6D AD
AC 9D KD
2S 3S 4S
KS 6S 7S
8S 9S 2H
JS QS KH
 5 8
2C 2D 2S 2H 3C 3D 3S 3H
4C 4D 4S 4H 5C 5D 5S 5H
8C 9C TC JC 7D 6H 9H J1
KC QC AC AS 7S JS TH QH
6C 7C J2 JH 6S 8H KH AH
 14 3
8H 9H TH
JH QH KH
2H 3H 4H
2C 3C 4C
5C 6C 7C
AC AD TC
2D 3D 4D
5D 6D 7D
8D AH AS
2S 3S 4S
5S 6S 7S
KC 9S KD
JC QC 8S
5H 6H 7H
 9 3
8D AH TD
5D 6D 7D
AS 3D 4D
8C AD TC
5C 6C KH
2C KS 4C
2H 3H 4H
5H 6H 7H
8H 9H TH
 14 3
8H 9H TH
5H 6H 7H
2H 3H 4H
2C 3C 4C
5C AH 7C
8C 9C AC
2D 3D 4D
5D AS 7D
AD KH TD
2S 3S 4S
5S 6S KC
8S KS TS
9S 7S JS
KD QS 6C
 6 3
7C 8C 9C
TC 2C 3C
QC 5C J1
2D 3D 4D
5D J2 6D
7D AD KS
 9 3
2H 4S AC
9S 2D 2S
AD TD 7S
J1 7D TS
3H QH 6H
JH 8S 5C
TC 6C 4H
9D 5D 9H
3S J2 QD
 6 6
3D 7C 8H 2S 5H 6D
QS KH TS 4D TH AH
4H J2 JC 6S QC JS
QH 9C AS 9H AC 4C
2H 3S KC J1 AD 9D
JD 8C 5S 3H JH 7H
 4 4
7S JD 5C 3S
9H 5H AS J2
KD JS 6D 9S
2S 8D JH J1
 6 3
J2 6D 2D
5D J1 7D
8D 9D TD
5H 6C 7C
8H TS QS
KS AS 2H
 6 7
2H 2D 3H 3D J2 2S 3S
4H 4D 5H 5D 4S 5S 6S
6H 6D TH TD 7S 8S 9S
JH JD QH QD AC KC QC
AH AD TS JS JC TC 9C
KH KD QS KS 8C 7C J1
 5 8
2C 2D 2S 2H 3C 3D 3S 3H
4C 4D 4S 4H 5C 5D 5S 5H
6H 9H J2 7D JC 8C 9C TC
JS TH QH 7S AS KC QC AC
8H KH AH 6S JH 6C 7C J1
 3 3
AH 5H J2
4H 8H KC
4C 9C TH
 5 8
2C 2D 2S 2H 3C 3D 3S 3H
4C 4D 4S 4H 5C 5D 5S 5H
6H 9H J1 7D JC 8C 9C TC
JS TH QH 7S AS KC QC AC
8H KH AH 6S JH 6C 7C J2
 4 13
8D 4S QH AS 3D 8C 6H AD 7D 9S 8S KH 7S
KS 2D 2C JH AC 8H 7H 3C J2 9C TS J1 QD
6D 3H QC 4D JD TH JC TD 4H 2H TC 5H KC
5S JS KD 5D AH 5C 4C 3S 6C 9D QS 6S 2S
 3 3
AH 9D 5D
JH 3S QH
J2 2S J1
 3 3
J1 7H 8H
AH QH 9H
J2 KH 2H
 6 7
J1 2H 3H 2D TS TD TC
4H 5H 6H JH JS JD JC
7H 8H 9H KH KS KD KC
7C 8C 9C AH AS AD TH
4C 5C 6C 3S 4S 5S 6S
J2 2C 3C QH QS QD QC
 5 8
2C 2D 2S 2H 3C 3D 3S 3H
4C 4D 4S 4H 5C 5D 5S 5H
8C 9C TC JC 7D 6H 9H J2
KC QC AC AS 7S JS TH QH
6C 7C J1 JH 6S 8H KH AH
 6 7
J1 2H 3H JH JS JC JD
4H 5H 6H 6D TH TS TD
7H 8H 9H 9D QS QC QD
7C 8C 9C KH KS KC KD
4C 5C 6C AH AS AC AD
2C 3C TC QH 6S 7S 8S
 7 7
J2 3C 4C 2D 3D 4D JC
5C 6C 7C 5D 6D 7D QC
8C 9C TC 8D 9D TD KC
2H 3H 4H 2S 3S 4S AC
5H 6H 7H 5S 6S 7S KH
8H 9H TH 8S 9S TS AH
JD QD KD AD JH QH J1
 7 7
4C 5S 6C 3H QD 8D 5C
7C 4D KC 2C 4S TH 2D
5H QS 9D 6S 2H 8H AC
J1 JC 3D TD J2 8C 7H
3C 5D 9S JD 8S 6D 9C
3S 7D AS KD KS KH AH
QH AD QC TC 2S JH TS
 5 5
2H 2S 2D 3D 4D
3H 3S 5D 6D 7D
2C 3C J2 8D 9D
4C 5C 6C 9H 9S
7C 8C 9C 8H 8S
 3 9
TH 2C AC 5H AH 5D 2D 3S TC
JD QC J1 2H 6C 9D 5S 2S 6S
8D KD J2 3D AS KC TS JC 5C
 13 4
AH TC J2 4D
QD 4S 3C KS
6S 8S 5S 9H
2D JS 7H JD
KD QS JC 6C
AD 3S 8C 7D
AS 2S 9C KC
3D J1 9D 8D
4H 7C TH 4C
9S QC QH 2C
2H 6H KH TD
3H 8H 5C TS
AC 5D 5H JH
 7 7
2C 3C 4C 2D 3D 4D JC
5C 6C 7C 5D 6D 7D QC
8C 9C TC 8D 9D TD KC
2H 3H J1 2S 3S 4S AC
5H 6H 7H 5S 6S 7S KH
8H 9H TH 8S 9S TS AH
JD QD KD AD JH QH AS
 7 7
3C 7S 2C AS 4S AC TS
KC 5H 4C 3S JC QS 9H
J1 JS 6H 3D KH 8D 2S
7H 2D 2H 3H 5S 5D 9C
6S TD KD 4H 7C QC 8C
9D TH 9S 5C QH AD 4D
8S JD 8H JH AH QD 6D
 6 7
2H 2D 3H 3D J1 2S 3S
4H 4D 5H 5D 4S 5S 6S
6H 6D TH TD 7S 8S 9S
JH JD QH QD AC KC QC
AH AD TS JS JC TC 9C
KH KD QS KS 8C 7C J2
 6 7
J2 2H 3H JH JS JC JD
4H 5H 6H 6D TH TS TD
7H 8H 9H 9D QS QC QD
7C 8C 9C KH KS KC KD
4C 5C 6C AH AS AC AD
2C 3C TC QH 6S 7S 8S

No solution.
 Solution exists.
Replace J1 with 2S and J2 with 9D.
Put the first square to (1, 1).
Put the second square to (1, 4).
 Solution exists.
Replace J1 with 5D and J2 with TH.
Put the first square to (1, 9).
Put the second square to (1, 12).
 No solution.
 Solution exists.
There are no jokers.
Put the first square to (1, 5).
Put the second square to (5, 1).
 No solution.
 Solution exists.
Replace J2 with 2C.
Put the first square to (1, 1).
Put the second square to (5, 1).
 No solution.
 No solution.
 No solution.
 No solution.
 No solution.
 No solution.
 Solution exists.
Replace J2 with 7C.
Put the first square to (1, 1).
Put the second square to (1, 4).
 Solution exists.
There are no jokers.
Put the first square to (1, 1).
Put the second square to (1, 4).
 No solution.
 Solution exists.
Replace J1 with 7H and J2 with JD.
Put the first square to (3, 1).
Put the second square to (3, 6).
 No solution.
 No solution.
 No solution.
 Solution exists.
Replace J1 with 4C and J2 with 8D.
Put the first square to (1, 1).
Put the second square to (4, 1).
 No solution.
 Solution exists.
Replace J1 with 2C and J2 with 2D.
Put the first square to (1, 1).
Put the second square to (4, 1).
 No solution.
 Solution exists.
Replace J1 with 3C and J2 with 4C.
Put the first square to (1, 1).
Put the second square to (4, 1).
 Solution exists.
Replace J1 with 2C and J2 with AS.
Put the first square to (1, 5).
Put the second square to (4, 5).
 Solution exists.
Replace J1 with JD and J2 with 7H.
Put the first square to (3, 1).
Put the second square to (3, 6).
 No solution.
 Solution exists.
Replace J1 with 7H and J2 with JD.
Put the first square to (3, 1).
Put the second square to (3, 6).
 No solution.
 No solution.
 No solution.
 No solution.
 Solution exists.
Replace J1 with JD and J2 with 7H.
Put the first square to (3, 1).
Put the second square to (3, 6).
 No solution.
 Solution exists.
Replace J1 with 2C and J2 with JS.
Put the first square to (1, 1).
Put the second square to (1, 4).
 No solution.
 No solution.
 No solution.
 Solution exists.
Replace J1 with 6D and J2 with 7S.
Put the first square to (1, 1).
Put the second square to (5, 2).
 Solution exists.
Replace J1 with 4H.
Put the first square to (1, 1).
Put the second square to (1, 4).
 Solution exists.
Replace J1 with 6C.
Put the first square to (1, 5).
Put the second square to (5, 3).
 Solution exists.
Replace J1 with AS and J2 with 2C.
Put the first square to (1, 5).
Put the second square to (4, 5).
 No solution.

#include<iostream>
#include<cstdio>
using namespace std;

char matrix[18][18][2];
char card[14][4] = { 0 };
int legal[18][18];

int rank( char );
int suit( char );
char rerank( int );
char resuit( int );
int judge( int , int , int , int );

int jr1 = -1 ,jc1 = -1 ,jr2 = -1 , jc2 = -1 ;

int main()
{
    int n,m;

    int mark[14];

    int t1,t2,t3;
    int t4;
    char a1,a2;
    int i1,i2,i3,i4;

    //freopen( "PRO20.txt" , "r" , stdin );

    cin>>n>>m;

    for( i1=1 ; i1<=n ; i1++ )
    {
        for( i2=1 ; i2<=m ; i2++ )
        {
            cin>>matrix[i1][i2][0]>>matrix[i1][i2][1];

            if( matrix[i1][i2][1] == '1' )
                jr1 = i1 , jc1 = i2;
            else if( matrix[i1][i2][1] == '2' )
                jr2 = i1 , jc2 = i2;
            else
                card[ rank( matrix[i1][i2][0] ) ][ suit( matrix[i1][i2][1] ) ] = 1;
        }
    }

    memset( legal , 0 , sizeof( legal ) );

    for( i1=n-2 ; i1>0 ; i1-- )
    {
        for( i2=m-2 ; i2>0 ; i2-- )
        {
            t1 = t2 = 1;
            t4 = 0;
            a1 = a2 = 0;
            memset( mark , 0 , sizeof( mark ) );

            for( i3=i1+2 ; i3>=i1 ; i3-- )
            {
                for( i4=i2+2 ; i4>=i2 ; i4-- )
                {
                    a1 = matrix[i3][i4][1];
                    if( a1 == '1' )
                    {
                        t4 += 1000000;
                        continue;
                    }
                    else if( a1 == '2' )
                    {
                        t4 += 2000000;
                        continue;
                    }

                    if( !a2 ) a2 = a1;

                    t3 = rank( matrix[i3][i4][0] );

                    if( ( t1 & ( 1 << t3 ) ) && ( t1 & 1 ) ) t1--;
                    t1 |= ( 1 << t3 );

                    if( a1 != a2 && t2 )
                        t2 = 0;
                }
            }

            if( !t4 && ( ( t1 & 1 ) || t2 ) ) legal[i1][i2] = 1;
            else if( t4 && ( t1 & 1 ) )
                legal[i1][i2] = t4 + t1;
        }
    }

    //for( i1=1 ; i1<=n ; i1++ )
    //{
    //  for( i2=1 ; i2<=m ; i2++ )
    //      printf( "%d " , legal[i1][i2] );
    //  printf( "\n" );
    //}

    for( i1=n-2 ; i1>0 ; i1-- )
    {
        for( i2=m-2 ; i2>0 ; i2-- )
        {
            if( !legal[i1][i2] ) continue;

            for( i3=i1+3 ; i3<=n ; i3++ )
            {
                if( !legal[i3][i2] ) continue;
                if( judge( i1 , i2 , i3 , i2 ) )
                {
                    printf( "Put the first square to (%d, %d).\n" , i1 , i2 );
                    printf( "Put the second square to (%d, %d).\n" , i3 , i2 );
                    return 0;
                }
            }

            for( i3=i1 ; i3<=n ; i3++ )
            {
                for( i4=i2+3 ; i4<=m ; i4++ )
                {
                    if( !legal[i3][i4] ) continue;
                    if( judge( i1 , i2 , i3 , i4 ) )
                    {
                        printf( "Put the first square to (%d, %d).\n" , i1 , i2 );
                        printf( "Put the second square to (%d, %d).\n" , i3 , i4 );
                        return 0;
                    }
                }
            }
        }
    }

    if( i1 <= 0 ) cout<< "No solution." <<endl;
    return 0;
}

int judge( int r1 , int c1 , int r2 , int c2 )
{
    int joker[2] = { 0 };
    int pp[2] = { 0 , 1 };
    int rpl[2];
    int t1,t2;

    t1 = legal[r1][c1] / 1000000;
    t2 = legal[r1][c1] % 1000000;
    if( t1 == 1 )
    {
        joker[0] = 1;
        rpl[0] = t2;
    }
    if( t1 == 2 )
    {
        joker[1] = 1;
        rpl[1] = t2;
    }
    if( t1 == 3 )
    {
        joker[0] = joker[1] = 1;
        rpl[0] = t2;
        pp[1] = 0;
    }

    t1 = legal[r2][c2] / 1000000;
    t2 = legal[r2][c2] % 1000000;
    if( t1 == 1 )
    {
        joker[0] = 1;
        rpl[0] = t2;
    }
    if( t1 == 2 )
    {
        joker[1] = 1;
        rpl[1] = t2;
    }
    if( t1 == 3 )
    {
        joker[0] = joker[1] = 1;
        rpl[0] = t2;
        pp[1] = 0;
    }

    int i1,i2,i3,i4;
    if( joker[0] && !joker[1] )
    {
        for( i1=1 ; i1<14 ; i1++ )
        {
            if( rpl[0] & ( 1 << i1 ) ) continue;
            for( i2=0 ; i2<4 ; i2++ )
            {
                if( card[i1][i2] ) continue;
                if( jr2 < 0 )
                {
                    printf( "Solution exists.\n" );
                    printf( "Replace J1 with %c%c.\n" , rerank( i1 ) , resuit( i2 ) );
                    return 1;
                }
                else
                {
                    for( i3=1 ; i3<14 ; i3++ )
                    {
                        for( i4=0 ; i4<4 ; i4++ )
                        {
                            if( i1 == i3 && i2 == i4 ) continue;
                            if( card[i3][i4] ) continue;
                            printf( "Solution exists.\n" );
                            printf( "Replace J1 with %c%c and J2 with %c%c.\n" , rerank( i1 ) , resuit( i2 ) , rerank( i3 ) , resuit( i4 ) );
                            return 1;
                        }
                    }
                }
            }
        }
    }
    else if( !joker[0] && joker[1] )
    {
        for( i1=1 ; i1<14 ; i1++ )
        {
            if( rpl[1] & ( 1 << i1 ) ) continue;
            for( i2=0 ; i2<4 ; i2++ )
            {
                if( card[i1][i2] ) continue;
                if( jr1 < 0 )
                {
                    printf( "Solution exists.\n" );
                    printf( "Replace J2 with %c%c.\n" , rerank( i1 ) , resuit( i2 ) );
                    return 1;
                }
                else
                {
                    for( i3=1 ; i3<14 ; i3++ )
                    {
                        for( i4=0 ; i4<4 ; i4++ )
                        {
                            if( i1 == i3 && i2 == i4 ) continue;
                            if( card[i3][i4] ) continue;
                            printf( "Solution exists.\n" );
                            printf( "Replace J1 with %c%c and J2 with %c%c.\n" , rerank( i1 ) , resuit( i2 ) , rerank( i3 ) , resuit( i4 ) );
                            return 1;
                        }
                    }
                }
            }
        }
    }
    else if( joker[0] && joker[1] )
    {
        for( i1=1 ; i1<14 ; i1++ )
        {
            if( rpl[pp[0]] & ( 1 << i1 ) ) continue;
            rpl[pp[0]] |= ( 1 << i1 );

            for( i2=0 ; i2<4 ; i2++ )
            {
                if( card[i1][i2] ) continue;
                //
                for( i3=1 ; i3<14 ; i3++ )
                {
                    if( rpl[pp[1]] & ( 1 << i3 ) ) continue;
                    for( i4=0 ; i4<4 ; i4++ )
                    {
                        if( i1 == i3 && i2 == i4 ) continue;
                        if( card[i3][i4] ) continue;
                        printf( "Solution exists.\n" );
                        printf( "Replace J1 with %c%c and J2 with %c%c.\n" , rerank( i1 ) , resuit( i2 ) , rerank( i3 ) , resuit( i4 ) );
                        return 1;
                    }
                }
            }

            rpl[pp[0]] &= ( ~( 1 << i1 ) );
        }
    }
    else
    {
        printf( "Solution exists.\n" );
        printf( "There are no jokers.\n" );
        return 1;
    }

    return 0;
}

int rank( char a1 )
{
    if( a1 > '0' && a1 <= '9' )
        return a1 - '0';
    else switch( a1 )
    {
        case 'A': return 1;
        case 'K': return 13;
        case 'Q': return 12;
        case 'J': return 11;
        case 'T': return 10;
    };
}

int suit( char a1 )
{
    switch( a1 )
    {
    case 'C': return 0;
    case 'D': return 1;
    case 'H': return 2;
    case 'S': return 3; 
    };
}

char rerank( int t )
{
    switch( t )
    {
    case 1: return 'A';
    case 10: return 'T';
    case 11: return 'J';
    case 12: return 'Q';
    case 13: return 'K';
    default: return t+'0';
    };

}

char resuit( int t )
{
    switch( t )
    {
    case 0: return 'C';
    case 1: return 'D';
    case 2: return 'H';
    case 3: return 'S';
    };
}