Smallest Zeroless Base

28

1

Given a positive integer n, output the smallest base b >= 2 where the representation of n in base b with no leading zeroes does not contain a 0. You may assume that b <= 256 for all inputs.

Test Cases

1 -> 2 (1)
2 -> 3 (2)
3 -> 2 (11)
4 -> 3 (11)
5 -> 3 (12)
6 -> 4 (12)
7 -> 2 (111)
10 -> 4 (22)
17 -> 3 (122)
20 -> 6 (32)
50 -> 3 (1212)
100 -> 6 (244)
777 -> 6 (3333)
999 -> 4 (33213)
1000 -> 6 (4344)
1179360 -> 23 ([12, 9, 21, 4, 4])
232792560 -> 23 ([15, 12, 2, 20, 3, 13, 1])
2329089562800 -> 31 ([20, 3, 18, 2, 24, 9, 20, 22, 2])
69720375229712477164533808935312303556800 -> 101 ([37, 17, 10, 60, 39, 32, 21, 87, 80, 71, 82, 14, 68, 99, 95, 4, 53, 44, 10, 72, 5])
8337245403447921335829504375888192675135162254454825924977726845769444687965016467695833282339504042669808000 -> 256 ([128, 153, 236, 224, 97, 21, 177, 119, 159, 45, 133, 161, 113, 172, 138, 130, 229, 183, 58, 35, 99, 184, 186, 197, 207, 20, 183, 191, 181, 250, 130, 153, 230, 61, 136, 142, 35, 54, 199, 213, 170, 214, 139, 202, 140, 3])

Mego

Posted 2017-10-25T19:01:01.033

Reputation: 32 998

1What are the values for ten, eleven, etc. in higher bases you are using? Do they contain zeroes? – Stephen – 2017-10-25T19:05:48.387

@Stephen The OP talking about the array-based representations of them, not the actual string representation – Okx – 2017-10-25T19:06:24.107

19@Stephen The values chosen for digits above 9 do not matter, because they are not 0. – Mego – 2017-10-25T19:06:43.580

Related. – Mr. Xcoder – 2017-10-25T19:33:21.140

9

This is OEIS A106370.

– Engineer Toast – 2017-10-25T19:36:59.423

What if builtins can´t do base 1000? – Titus – 2017-10-25T20:12:27.057

1@Titus That's a good point. I'll limit the base to something reasonable. – Mego – 2017-10-25T20:13:21.480

you should probably explicitly say you can't use fractional part numbers (10 = 9.999..., 17000 = 17999.999...) – Destructible Lemon – 2017-10-25T22:04:59.640

Could you add a couple of test cases with larger (>36) outputs? – Shaggy – 2017-10-25T22:14:38.110

@DestructibleLemon Do you mean 17000=16999,999...? Because it's certainly not 17999,999... – Fabian Röling – 2017-10-26T09:45:11.170

@Shaggy I tested my MATL entry up to 1e6, and didn't get beyond base 20 at n=658370 – Sanchises – 2017-10-26T10:45:16.993

The question title is misleading, and perhaps impossible. Don't all bases use zeros? Perhaps it should be "Smallest Base of Zeroless Representation". – CJ Dennis – 2017-10-27T03:25:00.720

@CJDennis You're reading too much into it. – Mego – 2017-10-27T03:25:27.500

@Shaggy I'm still searching for cases where b > 20. It's taking a while! – Mego – 2017-10-27T03:25:56.157

1@Mego: Try 232792560. It's the lcm of 2,3,...,20, so in every base <= 20 it has a 0 as the least significant digit. – Nate Eldredge – 2017-10-27T13:49:25.033

While the larger test cases are interesting, are we required to handle them? If our language doesn't support extended integers, for example, or at least, not by default? – Conor O'Brien – 2017-10-27T20:30:36.080

@ConorO'Brien By the meta consensus, no. – Mego – 2017-10-27T20:30:59.587

@Mego Which meta consensus, for future reference? – Conor O'Brien – 2017-10-27T20:47:52.640

@ConorO'Brien There's not a hard consensus, but the answers to this question all share the same idea that cases where the input and/or output exceed the language's representable range need not be considered.

– Mego – 2017-10-27T20:49:14.797

Answers

15

Pyth, 6 bytes

f*FjQT

Verify all the test cases.

How it works

f*FjQT  ~ Full program.

f       ~ First positive integer where the condition is truthy.
   jQT  ~ The input converted to base of the current element.
 *F     ~ Product. If the list contains 0, then it's 0, else it is strictly positive.
          0 -> Falsy; > 0 -> Truthy.
        ~ Output the result implicitly.

Although Pyth's f operates on 1, 2, 3, 4, ... (starting at 1), Pyth treats numbers in base 1 (unary) as a bunch of zeros, so base 1 is ignored.

Mr. Xcoder

Posted 2017-10-25T19:01:01.033

Reputation: 39 774

Nice abuse of the fact that Pyth's base-1 representation is all-zeroes. – Erik the Outgolfer – 2017-10-25T19:04:45.260

@EriktheOutgolfer Thanks! I will add an explanation regarding that. – Mr. Xcoder – 2017-10-25T19:05:08.030

Pyth isn't the only language whose unary representation uses zeroes as digits hint :P – Mego – 2017-10-25T19:05:32.573

You wrote 0 -> Falsy; > 0 -> Truthy. Is that intentional that 0 is both Truthy and Falsy in that situation? – Brian J – 2017-10-27T14:39:31.063

@BrianJ There is a > sign in front of the second 0, which means that everything higher than 0 is truthy. – Mr. Xcoder – 2017-10-27T15:35:46.247

@Mr.Xcoder D'oh, completely missed it the first read. Thanks! – Brian J – 2017-10-27T16:29:43.790

.A (all) would be a bit more natural than *F, but this works just as well. – isaacg – 2017-10-28T07:59:21.783

@isaacg Thanks, thought of that too but it wouldn't change much nonetheless. I was wondering though, why can't I remove the trailing T (the error messages when T is removed seem quite misleading)? – Mr. Xcoder – 2017-10-28T08:00:40.803

j allows a single input the way f does. On one input, j is the join function, which is not what we want here. – isaacg – 2017-10-28T08:03:27.470

@isaacg Duh right, I forgot about j's overloads >.< – Mr. Xcoder – 2017-10-28T08:04:12.980

11

C,  52  50 bytes

i,k;f(n){for(i=2,k=n;k;)k=k%i++?k/--i:n;return i;}

Try it online!

C (gcc),  47  45 bytes

i,k;f(n){for(i=2,k=n;k;)k=k%i++?k/--i:n;n=i;}

Try it online!


Two bytes saved thanks to @Nevay's suggestion on @Kevin Cruijssen's answer!

Steadybox

Posted 2017-10-25T19:01:01.033

Reputation: 15 798

2The latter version works only by random luck, even if you insist on a specific compiler. And, of course, neither version is really C. – AnT – 2017-10-26T08:51:03.903

3@AnT it is C.. it will give a lot of warnings but it will compile. as long as you find a compiler that works for your code, you're fine – Felipe Nardi Batista – 2017-10-26T10:38:30.980

46: k=k%i --> k%=i, IIRC – SIGSTACKFAULT – 2017-10-26T12:05:18.440

1@Blacksilver k%i is a ternary-check here. A more readable variant would be k=(k%i?k:n*++i); or even more clearly: if(k%i){k=k;}else{k=n*++i;}. – Kevin Cruijssen – 2017-10-26T12:40:57.920

1

Also, you can golf both by 2 bytes: i,k;f(n){for(i=2,k=n;k;)k=k%i++?k/--i:n;return i;} and i,k;f(n){for(i=2,k=n;k;)k=k%i++?k/--i:n;n=i;}. All credit goes to @Nevay who posted this suggestion on my ported Java 8 answer.

– Kevin Cruijssen – 2017-10-26T12:44:33.377

1@Felipe Nardi Batista: I'm aware of the fact that CodeGolf rules say "as long as it compiles" and so on. However, the fact that it "compiles" does not in any way prove that it is C. This is not C. Typeless declarations like i, k; and f(n) existed in ancient versions of C (K&R), but only in the era when return required round brackets around its argument. If you want to use K&R with i,k;, you also have to use return(i);. The above might be gnuc, but not C. – AnT – 2017-10-26T14:12:22.647

@AnT Yeah, it's not real, modern (or any other particular era) C, but as long as it compiles with a C compiler, it can be called C here, because on PPCG a language is defined by its implementation.

– Steadybox – 2017-10-26T14:43:08.727

@Steadybox: Yes, but how do PPCG rules establish connection between "language" to "its implementation"? Who said that defalt-configured gcc compiler is an implementation of C? In fact, everybody knows that it isn't. – AnT – 2017-10-26T15:07:00.650

@AnT While a default-configured gcc-compiler doesn't implement the C standard precisely, I think it still is reasonable to call code written for it C. It still is a version of C, even if it's not a standard version. – Steadybox – 2017-10-26T15:20:12.557

@AnT: I've specifically called for tcc a few times. – Joshua – 2017-10-26T20:26:49.613

Nice. Note code fails for OP's last 3 test cases with 32-bit int. Certainly has trouble with many values > INT_MAX – chux - Reinstate Monica – 2017-10-27T18:11:27.763

@chux Yep, it can't handle inputs larger than INT_MAX as is, but that's okay.

– Steadybox – 2017-10-28T01:45:15.567

8

Haskell, 56 52 48 bytes

b#n=n<1||mod n b>0&&b#div n b
f n=until(#n)(+1)2

Try it online!

Pretty basic but can't think of any good ways to shorten it

EDIT: Thanks to Laikoni for saving me 4 bytes! Don't know why I never thought of !!0. I probably should've tried removing those parentheses but I have vague memories of some weird error when you try to use || and && together. Maybe I'm confusing it with the equality operators.

EDIT 2: Thanks @Lynn for shaving another 4 bytes! Don't know how I never knew about until before now.

user1472751

Posted 2017-10-25T19:01:01.033

Reputation: 1 511

1You beat me by a minute with nearly exactly the same solution. :) !!0 is shorter than head and I think you can drop the parenthesis in #. – Laikoni – 2017-10-25T19:37:26.043

2The criminally underrated until :: (a → Bool) → (a → a) → a → a saves four bytes: f n=until(#n)(+1)2 – Lynn – 2017-10-26T13:41:24.937

7

Wolfram Language (Mathematica), 33 bytes

2//.i_/;DigitCount[#,i,0]>0:>i+1&

Try it online!

JungHwan Min

Posted 2017-10-25T19:01:01.033

Reputation: 13 290

6

Husk, 7 bytes

→V▼MBtN

Try it online!

Explanation

→V▼MBtN
     tN    list of natural numbers starting from 2
   MB      convert the (implicit) input to each of those bases
 V▼        find the (1-based) index of the first result where the minimum digit is truthy
→          add 1 to this index

Leo

Posted 2017-10-25T19:01:01.033

Reputation: 8 482

5

Python 2, 57 bytes

n=x=input()
b=2
while x:z=x%b<1;b+=z;x=[x/b,n][z]
print b

Try it online!

This is one byte shorter than a recursive function:

f=lambda n,b=1,x=1:b*(x<1)or f(n,b+(x%b<1),[x/b,n][x%b<1])

Lynn

Posted 2017-10-25T19:01:01.033

Reputation: 55 648

1BTW this is pretty similar to my solution. – Erik the Outgolfer – 2017-10-26T11:22:58.130

4

Jelly, 7 bytes

2b@Ạ¥1#

Try it online!

Erik the Outgolfer

Posted 2017-10-25T19:01:01.033

Reputation: 38 134

3

05AB1E, 6 bytes

-4 bytes thanks to Adnan

1µNвPĀ

Try it online!

Okx

Posted 2017-10-25T19:01:01.033

Reputation: 15 025

10 bytes: [¹NÌDŠвPĀ# – Neil – 2017-10-25T19:24:56.923

21µNвPĀ works for 6 bytes – Adnan – 2017-10-25T19:52:29.963

@Adnan I knew it was way too long – Okx – 2017-10-25T20:10:32.193

LB0.å0k is another method entirely >_>. – Magic Octopus Urn – 2017-10-27T14:17:15.013

3

Husk, 9 bytes

←foΠ`B⁰tN

Try it online!

Explanation

            -- input N
        tN  -- tail of [1..] == [2..]
←f(    )    -- filter with the following:
    `B⁰     --   convert N to that base
   Π        --   product (0 if it contains 0)
←           -- only keep first element

ბიმო

Posted 2017-10-25T19:01:01.033

Reputation: 15 345

3

Java 8, 61 56 54 bytes

n->{int b=2,t=n;for(;t>0;)t=t%b++<1?n:t/--b;return b;}

Try it here.

Explanation:

n->{            // Method with integer as both parameter and return-type
  int b=2,      //  Base-integer, starting at 2
      t=n;      //  Temp-integer, copy of the input
  for(;t>0;)    //  Loop as long as `t` is not 0
    t=t%b++<1?  //   If `t` is divisible by the base `b`
                //   (and increase the base `b` by 1 afterwards with `b++`)
       n        //    Set `t` to the input `n`
      :         //   Else:
       t/--b;   //    Divide `t` by the `b-1`
                //    (by decreasing the base `b` by 1 first with `--b`)
                //  End of loop (implicit / single-line body)
  return b;     //  Return the resulting base
}               // End of method

I have the feeling this can be golfed by using an arithmetic approach. It indeed can, with a port of @Steadybox' C answer, and then golfed by 2 bytes thanks to @Nevay.

Old (61 bytes) answer:

n->{int b=1;for(;n.toString(n,++b).contains("0"););return b;}

Try it here.

Explanation:

n->{         // Method with Integer as both parameter and return-type
  int b=1;   //  Base-integer, starting at 1
  for(;n.toString(n,++b).contains("0"););
             //  Loop as long as the input in base-`b` does contain a 0,
             //  after we've first increased `b` by 1 before every iteration with `++b`
  return b;  //  Return the resulting base
}            // End of method

Kevin Cruijssen

Posted 2017-10-25T19:01:01.033

Reputation: 67 575

254 bytes: n->{int b=2,t=n;for(;t>0;)t=t%b++<1?n:t/--b;return b;} – Nevay – 2017-10-26T11:43:51.447

2

Python 2, 57 bytes

n=m=input()
b=2
while m:c=m%b<1;b+=c;m=(m/b,n)[c]
print b

Try it online!

-1 thanks to Felipe Nardi Batista.
-2 thanks to Lynn (and now this is a dupe of her solution :D)

Erik the Outgolfer

Posted 2017-10-25T19:01:01.033

Reputation: 38 134

59 bytes by changing a,b=a+c,d to a+=c;b=d – Felipe Nardi Batista – 2017-10-26T10:12:49.557

I think you can replace while m>1 by while m (and then we’re tied!) – Lynn – 2017-10-26T13:32:27.553

@Lynn That's why I commented on your solution, it would be exactly the same then. – Erik the Outgolfer – 2017-10-26T13:33:31.783

That’s okay! – Lynn – 2017-10-26T13:42:53.457

1@Lynn I already knew :p otherwise I'd have asked you to delete yours. – Erik the Outgolfer – 2017-10-26T13:43:10.017

2

Japt, 8 bytes

@ìX e}a2

Try it online!

Explanation

@    }a2

Return the first number (X) to pass the function, starting at 2

ìX

Convert the input number to an array of base-X digits.

e

Check if all digits are truthy.

Justin Mariner

Posted 2017-10-25T19:01:01.033

Reputation: 4 746

Won't this fail if the array contains any multiple of 10? – Shaggy – 2017-10-25T22:18:23.550

@Shaggy My understanding was that, according to OPs comment, that the digits for bases above 9 don't count as zero. – Justin Mariner – 2017-10-25T22:36:11.357

Ah, I see that now. There's a problem with the phrasing of the challenge, so (or I'm just too tired!). – Shaggy – 2017-10-25T22:39:30.807

2

JavaScript (ES6), 43 41 37 bytes

n=>(g=x=>x?g(x%b++?x/--b|0:n):b)(b=1)

Test cases

let f =

n=>(g=x=>x?g(x%b++?x/--b|0:n):b)(b=1)

console.log(f(1   )) // 2 (1)
console.log(f(2   )) // 3 (2)
console.log(f(3   )) // 2 (11)
console.log(f(4   )) // 3 (11)
console.log(f(5   )) // 3 (12)
console.log(f(6   )) // 4 (12)
console.log(f(7   )) // 2 (111)
console.log(f(10  )) // 4 (22)
console.log(f(17  )) // 3 (122)
console.log(f(20  )) // 6 (32)
console.log(f(50  )) // 3 (1212)
console.log(f(100 )) // 6 (244)
console.log(f(777 )) // 6 (3333)
console.log(f(999 )) // 4 (33213)
console.log(f(1000)) // 6 (4344)

Arnauld

Posted 2017-10-25T19:01:01.033

Reputation: 111 334

2

Brachylog, 11 bytes

;.≜ḃ₎¬∋0∧1¬

Try it online!

Explanation

;.≜ḃ₎           The Input represented in base Output…
     ¬∋0        …contains no 0
        ∧1¬     And Output ≠ 1

Fatalize

Posted 2017-10-25T19:01:01.033

Reputation: 32 976

2

APL (Dyalog), 20 19 bytes

1+⍣{~0∊⍺⊥⍣¯1⊢n}≢n←⎕

Try it online!

As usual, thanks to @Adám for helping out in chat and getting the code to work in TIO. Also, saving 1 byte.

This is tradfn (traditional function) body. To use it, you need to assign it a name (which is in TIO's header field), enclose it in s (one before the name and one in TIO's footer field), and then call it using its name. Since it uses a quad () to take the user's input, it's called as f \n input instead of the usual f input

How?

1+⍣{~0∊⍺⊥⍣¯1⊢n}≢n←⎕  ⍝ Main function.
                  n←⎕ ⍝ Assigns the input to the variable n
1+⍣{           }≢     ⍝ Starting with 1, add 1 until the expression in braces is truthy
    ~0∊               ⍝ returns falsy if 0 "is in"
        ⊥             ⍝ convert
            ⊢n        ⍝ the input
         ⍣¯1          ⍝ to base
       ⍺              ⍝ left argument (which starts at 1 and increments by 1)

The function then returns the resulting base.

J. Sallé

Posted 2017-10-25T19:01:01.033

Reputation: 3 233

1

Golfing tip: since n←⎕ will be a simple number and you need 1 as initial argument to the rest of the code, you can just count the number of elements in n (which is 1), by replacing 1⊣ with . Try it online!

– Adám – 2017-10-27T11:20:53.627

1

Proton, 40 bytes

x=>filter(y=>all(digits(y,x)),2..x+3)[0]

Try it online!

HyperNeutrino

Posted 2017-10-25T19:01:01.033

Reputation: 26 575

1This is invalid. 2..x checks for bases in the interval [2, x), hence it fails for test cases 1 and 2. – Mr. Xcoder – 2017-10-25T20:21:27.493

1

R, 79 71 66 63 65 bytes

function(n){while(!{T=T+1;all(n%/%T^(0:floor(log(n,T)))%%T)})T
T}

Try it online!

This answer is based on Giuseppe's re-arrangement in one single loop.

Saved 8 bytes thanks to JDL, and 6 bytes thanks to Giuseppe.

NofP

Posted 2017-10-25T19:01:01.033

Reputation: 754

1You can sub b for T, which starts out defined as TRUE == 1, removing the need for b=1. Similarly you can sub F for k (F is FALSE) – JDL – 2017-10-27T08:30:22.787

I see what you did there. That's a useful one to know! – NofP – 2017-10-27T10:09:51.960

166 bytes using m%/%T (integer division) instead of (m-m%%T)/T – Giuseppe – 2017-10-27T11:00:48.553

65 bytes. it was a bit messy but I suspected getting rid of the nested loops would save something; I just thought it would be more than 1 byte :( – Giuseppe – 2017-10-27T15:51:00.350

1

MATL, 13 12 bytes

`G@Q_YAA~}@Q

Try it online!

-1 byte thanks to Luis Mendo. This program does not handle testcases bigger than 2^53 (flintmax, the maximum consecutive integer representable by a floating point type), as the default datatype is double in MATL. However, it should be able to find any arbitrary zeroless base below that number.

`            % Do while
 G           %  Push input
  @ _        %  Outputs the iteration number, negate.
     YA      %  Convert input to base given by the iteration number, the negative number is to instruct MATL we want an arbitrary high base with a integer vector rather than the default character vector we know from hexadecimal
       A~    %  If they're not all ones, repeat
         }   % But if they are equal, we finally
          @  %  Push the last base
   Q       Q %  As base 1 makes no sense, to prevent MATL from errors we always increase the iteration number by one.

Sanchises

Posted 2017-10-25T19:01:01.033

Reputation: 8 530

@LuisMendo I should really start reading the docs better. Thanks. – Sanchises – 2017-10-26T20:22:08.293

This doesn't seem to work for the larger test cases, but I don't know enough about MATL/Matlab to know if that's caused by integer limits or not. – Mego – 2017-10-27T20:50:47.743

@Mego I tested my 13 byte version which should be equivalent to the current version up to 1e6, on MATLAB R2017a. What test setup resulted in problems for you? – Sanchises – 2017-10-27T22:59:12.127

The last 2 test cases cause errors. – Mego – 2017-10-28T04:57:46.623

@Mego Ah I didn't see those testcases before. This is due to the implementation of MATLs YA using doubles internally, so it can only handle inputs up to the maximum consecutive integer representable by a double (see flintmax). Does this invalidate the answer? In principle the algorithm works for arbitrary base, I've explicitly worked around another command that would only do up to base 36. – Sanchises – 2017-10-28T10:54:50.370

@Mego Actually, I've spotted your comment on the OP. Thanks for spotting the limitation though, I may want to try and make a MATLAB version that uses arbitrary precision integers. – Sanchises – 2017-10-28T11:24:43.917

0

Actually,  12  11 bytes

╗1⌠╜¡m'0<⌡╓

Try it online!

Uses this consensus. Thanks to Mego for byte-saving help in chat.

Mr. Xcoder

Posted 2017-10-25T19:01:01.033

Reputation: 39 774

0

PHP, 59+1 bytes

using builtins, max base 36:

for($b=1;strpos(_.base_convert($argn,10,++$b),48););echo$b;

no builtins, 6360+1 bytes, any base:

for($n=$b=1;$n&&++$b;)for($n=$argn;$n%$b;$n=$n/$b|0);echo$b;

Run as pipe with -nR or try them online.

Titus

Posted 2017-10-25T19:01:01.033

Reputation: 13 814

0

J, 26 bytes

]>:@]^:(0 e.]#.inv[)^:_ 2:

Would love to know if this can be improved.

The main verb is a the dyadic phrase:

>:@]^:(0 e.]#.inv[)^:_

which is given the input on the left and the constant 2 on the right. That main verb phrase then uses J's Do..While construct, incrementing the right y argument as long as 0 is an element of e. the original argument in base y.

Try it online!

Jonah

Posted 2017-10-25T19:01:01.033

Reputation: 8 729

0

Lua, 77 76 bytes

b=2n=...N=n
while~~N>0 do
if N%b<1then
b=b+1N=n
else
N=N//b
end
end
print(b)

Try it online!

Felipe Nardi Batista

Posted 2017-10-25T19:01:01.033

Reputation: 2 345

0

Milky Way, 38 bytes

^^'%{255£2+>:>R&{~^?{_>:<;m_+¡}}^^^}

usage: ./mw base.mwg -i 3


Explanation

code                                 explanation                    stack layout

^^                                   clear the preinitialized stack []
  '                                  push the input                 [input]
   %{                              } for loop
     255£                             push next value from 0..254   [input, base-2]
         2+                           add 2 to the get the base     [input, base]
           >                          rotate stack right            [base, input]
            :                         duplicate ToS                 [base, input, input]
             >                        rotate stack right            [input, base, input]
              R                       push 1                        [input, base, input, 1]
               &{~             }      while ToS (=remainder) is true ...
                  ^                    pop ToS                      [input, base, number]
                   ?{         }        if ToS (=quotient) ...
                     _>:<;              modify stack                [input, base, number, base]
                           m            divmod                      [input, base, quotient, remainder]
                           _+¡         else: output ToS (0) + SoS and exit
                                ^^^   pop everything but the input.

I'm sure this can be shortened using a while-loop instead of a for loop, but I couldn't get it to work.

ovs

Posted 2017-10-25T19:01:01.033

Reputation: 21 408

0

Stacked, 23 bytes

{!2[1+][n\tb all]until}

Try it online!

This increments ([1+]) J starting from two (2) while the baseJ representation of the input has no zeroes (all and until).

Conor O'Brien

Posted 2017-10-25T19:01:01.033

Reputation: 36 228

0

Perl 5, 52 + 2 (-pa) = 54 bytes

$\=1;while($_&&=$F[0]){$\++;$_=int$_/$\while$_%$\}}{

Try it online!

Xcali

Posted 2017-10-25T19:01:01.033

Reputation: 7 671