Ashish and Vivek play a game on a matrix consisting of $n$ rows and $m$ columns, where they take turns claiming cells. Unclaimed cells are represented by $0$, while claimed cells are represented by $1$. The initial state of the matrix is given. There can be some claimed cells in the initial state.

In each turn, a player must claim a cell. A cell may be claimed if it is unclaimed and does not share a row or column with any other already claimed cells. When a player is unable to make a move, he loses and the game ends.

If Ashish and Vivek take turns to move and Ashish goes first, determine the winner of the game if both of them are playing optimally.

Optimal play between two players means that both players choose the best possible strategy to achieve the best possible outcome for themselves.


-----Input-----

The first line consists of a single integer $t$ $(1 \le t \le 50)$ — the number of test cases. The description of the test cases follows.

The first line of each test case consists of two space-separated integers $n$, $m$ $(1 \le n, m \le 50)$ — the number of rows and columns in the matrix.

The following $n$ lines consist of $m$ integers each, the $j$-th integer on the $i$-th line denoting $a_{i,j}$ $(a_{i,j} \in \{0, 1\})$.


-----Output-----

For each test case if Ashish wins the game print "Ashish" otherwise print "Vivek" (without quotes).


-----Example-----
Input
4
2 2
0 0
0 0
2 2
0 0
0 1
2 3
1 0 1
1 1 0
3 3
1 0 0
0 0 0
1 0 0

Output
Vivek
Ashish
Vivek
Ashish



-----Note-----

For the first case: One possible scenario could be: Ashish claims cell $(1, 1)$, Vivek then claims cell $(2, 2)$. Ashish can neither claim cell $(1, 2)$, nor cell $(2, 1)$ as cells $(1, 1)$ and $(2, 2)$ are already claimed. Thus Ashish loses. It can be shown that no matter what Ashish plays in this case, Vivek will win. 

For the second case: Ashish claims cell $(1, 1)$, the only cell that can be claimed in the first move. After that Vivek has no moves left.

For the third case: Ashish cannot make a move, so Vivek wins.

For the fourth case: If Ashish claims cell $(2, 3)$, Vivek will have no moves left.

Difficulty: interview

Starter code:

Solutions:
t = int(input())

for _ in range(t):
    n, m = [int(x) for x in input().split()]
    grid = [[int(x) for x in input().split()] for _ in range(n)]

    rows = sum(1 for x in grid if all(y == 0 for y in x))
    cols = sum(1 for j in range(m) if all(grid[i][j] == 0 for i in range(n)))

    res = min(rows, cols)

    print("Ashish" if res % 2 else "Vivek")


q = int(input())
for _ in range(q):
    r,c = map(int,input().split())
    mat = [list(map(int,input().split())) for i in range(r)]
    row = 0
    for i in mat:
        if sum(i) == 0:
            row += 1
    col = 0
    for i in range(c):
        su = 0
        for j in range(r):
            su += mat[j][i]
        if su == 0:
            col += 1
    cyk = min(row, col)
    if cyk%2 == 0:
        print("Vivek")
    else:
        print("Ashish")

from bisect import bisect_left as bl
from bisect import bisect_right as br
from heapq import heappush,heappop
import math
from collections import *
from functools import reduce,cmp_to_key
import sys
input = sys.stdin.readline
M = mod = 998244353
def factors(n):return sorted(set(reduce(list.__add__, ([i, n//i] for i in range(1, int(n**0.5) + 1) if n % i == 0))))
def inv_mod(n):return pow(n, mod - 2, mod)
 
def li():return [int(i) for i in input().rstrip('\n').split()]
def st():return input().rstrip('\n')
def val():return int(input().rstrip('\n'))
def li2():return [i for i in input().rstrip('\n')]
def li3():return [int(i) for i in input().rstrip('\n')]

for _ in range(val()):
    n,m = li()
    l = []
    for i in range(n):l.append(li())
    rows = n
    cols = m
    for i in range(n):
        if sum(l[i]):rows -= 1
    for j in range(m):
        for i in range(n):
            if l[i][j]:
                cols -= 1
                break
    n = rows
    m = cols
    print('Ashish' if min(n,m)&1 else 'Vivek')

for _ in range(int(input())):
    n, m = list(map(int, input().split()))
    arr = [list(map(int, input().split())) for _ in range(n)]

    rows = 0
    for i in range(n):
        if 1 in arr[i]:
            rows += 1
    rows = n-rows

    cols = 0
    for j in range(m):
        for i in range(n):
            if arr[i][j] == 1:
                cols += 1
                break

    cols = m-cols

    if min(cols, rows) % 2 == 0:
        print("Vivek")
    else:
        print("Ashish")


T = int(input())

for t in range(T):
    N, M = [int(_) for _ in input().split()]
    matrix = []

    for i in range(N):
        row = [int(_) for _ in input().split()]
        matrix.append(row)

    available_rows = 0
    for row in matrix:
        if 1 not in row:
            available_rows += 1
    available_cols = 0
    for i in range(len(matrix[0])):
        for j in range(len(matrix)):
            if matrix[j][i] == 1:
                break
        else:
            available_cols += 1

    a = min(available_cols, available_rows)
    if a & 1:
        print('Ashish')
    else:
        print('Vivek')


for _ in range(int(input())):
    n, m = list(map(int, input().split()))
    arr = [[0] * m for i in range(n)]
    for i in range(n):
        arr[i] = list(map(int, input().split()))
    a = 0
    for i in range(n):
        if sum(arr[i]) == 0:
            a += 1
    b = 0
    for j in range(m):
        cnt = 0
        for i in range(n):
            cnt += arr[i][j]
        if cnt == 0:
            b += 1
    if min(a, b) % 2 == 1:
        print('Ashish')
    else:
        print('Vivek')


from math import *

def r1(t):
    return t(input())

def r2(t):
    return [t(i) for i in input().split()]

def r3(t):
    return [t(i) for i in input()]

for _ in range(r1(int)):
    n, m = r2(int)
    a = []
    for i in range(n):
        a.append(r2(int))

    c = 0
    for i in range(n):
        if sum(a[i]) > 0:
            c += 1

    c2 = 0
    for j in range(m):
        for i in range(n):
            if a[i][j] > 0:
                c2 += 1
                break

    if min(n - c, m - c2) % 2 == 1:
        print('Ashish')
    else:
        print('Vivek')


t=int(input())
for q in range(t):
	n,m=[int(i) for i in input().split()]
	a=[[int(j) for j in input().split()] for i in range(n)]
	row=[False for i in range(n)]
	col=[False for i in range(m)]
	nr,nc=0,0
	for i in range(n):
		for j in range(m):
			if a[i][j]==1:
				if not row[i]:
					row[i]=True
					nr+=1
				if not col[j]:
					col[j]=True
					nc+=1
	t=min(n-nr,m-nc)
	res="Vivek" if t%2==0 else "Ashish"
	print(res)


t = int(input())
for _ in range(t):
    n,m = [int(i) for i in input().split()]
    v,h = 0,0
    grid = []
    for _ in range(n):
        line = [int(i) for i in input().split()]
        if 1 not in line:
            h += 1
        grid.append(line)
    for i in range(m):
        if 1 not in [j[i] for j in grid]:
            v += 1
    M = min(h, v)
    if M&1:
        print("Ashish")
    else:
        print("Vivek")

T = int(input())

for t in range(T):
    n, m = list(map(int, input().split()))
    a = [list(map(int, input().split())) for i in range(n)]

    rows = set()
    cols = set()
    for i in range(n):
        for j in range(m):
            if a[i][j] == 1:
                rows.add(i)
                cols.add(j)

    m = min(n - len(rows), m - len(cols))
    if m % 2 == 0:
        print("Vivek")
    else:
        print("Ashish")


from sys import stdin
input = stdin.readline

for _ in range(int(input())):
    n, m = map(int, input().split())

    l = [[] for _ in range(m)]

    r = c = 0

    for _ in range(n):
        a = list(map(int, input().split()))

        for i in range(m):
            l[i].append(a[i])

        if 1 not in a:
            r += 1

    for a in l:
        if 1 not in a:
            c += 1

    if min(r, c) % 2:
        print('Ashish')
    else:
        print('Vivek')

def read_int():
    return int(input())


def read_ints():
    return list(map(int, input().split(' ')))


t = read_int()
for case_num in range(t):
    n, m = read_ints()
    a = []
    for i in range(n):
        a.append(list(read_ints()))
    row = set([i for i in range(n)])
    col = set([i for i in range(m)])
    for i in range(n):
        for j in range(m):
            if a[i][j] == 1:
                if i in row:
                    row.remove(i)
                if j in col:
                    col.remove(j)
    lo = min(len(row), len(col))
    print("Ashish" if lo % 2 == 1 else "Vivek")


def solve(n, m, grid):
    n_free_cols = sum(all(grid[i][j] == 0 for i in range(n)) for j in range(m))
    n_free_lines = sum(all(grid[i][j] == 0 for j in range(m)) for i in range(n))
    N = min(n_free_lines, n_free_cols)
    return N % 2 == 1


def main():
    T = int(input())
    for _ in range(T):
        n, m = list(map(int, input().split()))
        grid = [list(map(int, input().split())) for _ in range(n)]
        print("Ashish" if solve(n, m, grid) else "Vivek")


def __starting_point():
    main()

__starting_point()

from math import *
t = int(input())
for y in range(t):
	n,m = list(map(int,input().split()))
	a = []
	for i in range(n):
		a.append(list(map(int,input().split())))
	r,c = 0,0
	for i in range(n):
		ct = 0
		for j in range(m):
			if(a[i][j] == 0):
				ct += 1
		if(ct == m):
			r += 1
	for i in range(m):
		ct = 0
		for j in range(n):
			if(a[j][i] == 0):
				ct += 1
		if(ct == n):
			c += 1
	x = min(r,c)
	if(x&1):
		print("Ashish")
	else:
		print("Vivek")





from sys import stdin
T=int(stdin.readline().strip())
for caso in range(T):
    
    n,m=list(map(int,stdin.readline().strip().split()))
    s=[list(map(int,stdin.readline().strip().split())) for i in range(n)]
    r=n
    for i in range(n):
        if 1 in s[i]:
            r-=1
    c=m
    for i in range(m):
        for j in range(n):
            if s[j][i]==1:
                c-=1
                break
    x=min(c,r)
    if x%2==0:
        print("Vivek")
    else:
        print("Ashish")
            


t = int(input())

for _ in range(t):
    n, m = list(map(int, input().strip().split()))

    matrix = []
    for _ in range(n):
        matrix.append(list(map(int, input().strip().split())))

    rows = 0
    for row in matrix:
        if sum(row) == 0:
            rows += 1

    cols = 0
    for i in range(m):
        s = 0
        for j in range(n):
            s += matrix[j][i]
        if s == 0:
            cols += 1
    
    mini = min(cols, rows)

    if mini % 2 == 1:
        print("Ashish")
    else:
        print("Vivek")

for ttt in range(int(input())):
#	l = list(map(int, input().split()))
#	n = int(input())
	n, m = list(map(int, input().split()))
	x = [0] * n
	y = [0] * m
	for i in range(n):
		l = list(map(int, input().split()))
		if 1 in l:
			x[i] = 1
		for j in range(m):
			if l[j] == 1:
				y[j] = 1
	t = min(x.count(0), y.count(0))
	print('Vivek' if t % 2 == 0 else 'Ashish')



for nt in range(int(input())):
	n,m = map(int,input().split())
	mat = []
	for i in range(n):
		mat.append(list(map(int,input().split())))
	row = {}
	col = {}
	for i in range(n):
		if 1 in mat[i]:
			row[i]=1
	for i in range(m):
		flag = 0
		for j in range(n):
			if mat[j][i]==1:
				flag = 1
				break
		if flag:
			col[i]=1
	count = 0
	for i in range(n):
		for j in range(m):
			if i not in row and j not in col:
				row[i]=1
				col[j]=1
				count+=1
	if count%2:
		print ("Ashish")
	else:
		print ("Vivek")



for _ in range(int(input())):
	n,m=map(int,input().split())

	a=[]

	for i in range(n):
		a.append(list(map(int,input().split())))

	row=[0]*n
	col=[0]*m

	for i in range(n):
		for j in range(m):
			if(a[i][j]):
				row[i]=1;
				col[j]=1;

	rowc=row.count(0)
	colc=col.count(0)

	moves=min(rowc,colc)

	if(moves&1):
		print("Ashish")
	else:
		print("Vivek")