Your code has an uncanny mirror twin… Write two programs, each taking a string s and a number n ≥ 0, such that:


The first program prints s n times, separated by newlines.
The second program prints each character of s n times, with repeated characters separated by newlines.
Every character at column x, line y in one program equals the character at column y, line x in the other program.


Both programs must contain at least two lines. You may take input in any reasonable order or format that works for both programs.

This is code-golf; the less bytes, the better. Count bytes from your longer program (that is, the one with more lines than columns).



Here's an example in a hypothetical programming language, with s = "Hello, world!" and n = 3:

Program A

a(b*c
defg 
h.ij)


Output

Hello, world!
Hello, world!
Hello, world!


Program B

adh
(e.
bfi
*gj
c )


Output

HHH
eee
lll
lll
ooo
,,,

www
ooo
rrr
lll
ddd
!!!
C, 196 bytes


Regular version: 190 bytes

p;f(char *s,n) { 
; while( p++&lt;  n)
puts(s);p; }   /*
f*******u*0**;* /
(///////t/)//}+*
c*)dfppnc(;p(w+/
hs{oo=+;h* u"hs}
a, {r0+)a /t"i)/
rn  (;&lt; r *s l;*
/////// /  / e/ 
******* *  * (*/


Mirrored version: 196 bytes

p;pf(char/*
; u*/*s,n/*
fwt*/){  /*
(hs*/do{ /*
ci(*/for(/*
hls*/p=0;/*
ae)*/p++&lt;/*
r(;*/n;)   
  putchar/*
*p;+*/(*   
s+ 0); /*  
,+}*/puts/*
n&lt; */(""   
)  ;}while(
   *++s);/*
{n/ */}/* /
 )*/


Readable regular version:

p; f(char* s, n) {
  ;
  while (p++ &lt; n)
    puts(s);
  p;
}


Readable mirrored version:

p; pf(char* s, n) {
  do {
    for (p = 0; p++ &lt; n; )
      putchar (*s + 0);
    puts("");
  } while (*++s);
}