Create a function that finds the largest palindromic number made from the product of **at least 2** of the given arguments.
### Notes
* Only non-negative numbers will be given in the argument
* You don't need to use all the digits of the products
* Single digit numbers are considered palindromes
* Optimization is needed: dealing with ones and zeros in a smart way will help a lot
## Examples
```
[937, 113] --> 81518
```
As `937 * 113 = 105881` and the largest palindromic number that can be arranged from the digits of result is: `81518`
Another one:
```
[57, 62, 23] --> 82128
             product     palindrome
57 * 62      = 3534   -->  353
57 * 23      = 1311   -->  131
62 * 23      = 1426   -->  6
57 * 62 * 23 = 81282  -->  82128
```
One more:
```
[15, 125, 8] --> 8
             product     palindrome
15 * 125     = 1875   -->  8
15 * 8       = 120    -->  2
125 * 8      = 1000   -->  1
15 * 125 * 8 = 15000  -->  5
```
def palindrome(num):
    l = list(str(num))
    if len(l) == 1:
            return num
    else:
        l2 = [x for x in l if l.count(x)>=2]
        l22 = list(set(l2))
        l1 = [x for x in list(set(l)) if l.count(x)%2 != 0]
        l22.sort()
        if len(l2)==0 and len(l1) > 0 or len(l2) == l2.count('0'):
            return int(max(l1))
        else:
            l2a = ''
            for i in range(len(l22)):
                if l2.count(l22[i])%2 > 0: 
                    n = l2.count(l22[i])//2
                else:
                    n = l2.count(l22[i])/2
                l2a = l2a + l22[i] * int(n)
            l2b = l2a[::-1]
            if len(l1)>0:
                l2c = l2b + str(max(l1)) + l2a
            else:
                l2c = l2b + l2a
            return int(l2c)

def product1(list,pro,i,out):
    if i < len(list):
        proa = pro
        prob = list[i]
        
        pro = proa * prob
        if pro not in out:
            out.append(pro)
        product1(list,pro,i+1,out)
        product1(list,proa,i+1,out)
        product1(list,prob,i+1,out)
        
def numeric_palindrome(*args):
    args1 = [x for x in args if x > 1]
    args1.sort()
    out1 = []
    pro1 = []
    if args1 == [] and args.count(1) > 1:
        return 1
    elif args.count(0) == len(args) - 1 or args1 == []:
        return 0
    elif len(args1) == 1:
        return palindrome(args1[0])
    else:
        product1(args1,args1[0],1,pro1)
        if args.count(1) > 0:
            pro1 = pro1 + args1
        
        for j in pro1:
            out = palindrome(j)
            out1.append(out)
    return max(out1)

def palindrome(num):
    l = list(str(num))
    if len(l) == 1:
            return num
    else:
        l2 = [x for x in l if l.count(x)>=2]
        l22 = list(set(l2))
        l1 = [x for x in list(set(l)) if l.count(x)%2 != 0]
        l22.sort()
        if len(l2)==0 and len(l1) > 0 or len(l2) == l2.count('0'):
            return int(max(l1))
        else:
            l2a = ''
            for i in range(len(l22)):
                if l2.count(l22[i])%2 > 0: 
                    n = l2.count(l22[i])//2
                else:
                    n = l2.count(l22[i])/2
                l2a = l2a + l22[i] * int(n)
            l2b = l2a[::-1]
            if len(l1)>0:
                l2c = l2b + str(max(l1)) + l2a
            else:
                l2c = l2b + l2a
            return int(l2c)

def product1(list,pro,i,out):
    if i < len(list):
        proa = pro
        prob = list[i]
        
        pro = proa * prob
        if pro not in out:
            out.append(pro)
        product1(list,pro,i+1,out)
        product1(list,proa,i+1,out)
        product1(list,prob,i+1,out)
        
def numeric_palindrome(*args):
    args1 = [x for x in args if x > 1]
    args1.sort()
    out1 = []
    pro1 = []
    if args1 == [] and args.count(1) > 1:
        return 1
    elif args.count(0) == len(args) - 1 or args1 == []:
        return 0
    elif len(args1) == 1:
        return palindrome(args1[0])
    else:
        product1(args1,args1[0],1,pro1)
        if args.count(1) > 0:
            pro1 = pro1 + args1
        
        for j in pro1:
            out = palindrome(j)
            out1.append(out)
    return max(out1)
