Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Strong Sauce
Jul 2, 2003

You know I am not really your father.





HondaCivet posted:

. . . Huh? Admitting that there's someone out there besides you that understands the subject very well automatically means that you aren't good at anything?

No it just looks bad to say that in an interview. The algorithm isn't that hard, its just whether you remember it or not so if you say that you sound like someone who doesn't know their poo poo.

Imagine if it went something like
A: Do you know what a Hash is?
B: No, but I would consult an expert.

So should they give the expert the job instead of you? Why should they hire you? Saying this probably gets you crossed off the eligible list, and if you don't understand why then you should take a moment to figure out why that is a bad response to a question.

But the company shouldn't completely base it on whether or not you bothered to remember this specific algorithm.

For me here is how the interview should progress.

quote:

Interviewer (A): If I wanted to calculate the first 10 digits of this exponent: 2^100, how would I do it?

Interviewee (B): Well I would evaluate 2^100 and then, convert it into a string of chars and then take the last 10 elements of the array, then I concatenate the chars into a string and call a stoi function.

A: Okay lets assume that space is tight and you are only given space to hold a variable containing the ten digits, how would you do it?

B: Well I suppose you can use the modulo function, I guess that would work as well. I guess 2^100 % (10^10), or something like that I think.

A: Okay that's right. Now how about if we had to find the first 10 digits of a really large exponent, like 2^123456. Let's assume that the programming language we are using cannot compute this number in a decent amount of time, how would you solve this problem?

B: I'm not sure exactly.

A: Well do you remember your rules of exponents?

B: Yes.

A: Well can you extract a way to compute this without having to compute 2^123456?

B: Well I guess you can break down the problem by separating out the different powers of 2 into smaller powers until we can calculate them out.

I'm going to stop because its looking like a chat log.

But that's the gist of it, if it appears that the person I'm talking to actually understands some basic maths, or can explain why they are using a hash vs a binary tree vs an array for the data structure in the problem, and can explain the general algorithm use to solve this after talking with him then I think that's good enough for him to move on to the next step, which would probably be a more difficult coding problem.

If the person answers this question very fast I would hope the Interviewer would follow up with an additional question with a slight modification which would distinguish the difference between someone who knows their poo poo vs. someone who just memorized the question from an interview book.

Adbot
ADBOT LOVES YOU

shrughes
Oct 11, 2008

(call/cc call/cc)
The real answer is that you write a program on your HP calculator that talks over the serial cable and sends back the result of running MODEXP on the input.

The worst is how I was at a job fair recently, and I told an undergrad we were a rather data structures & algorithms-heavy company. The undergrad told me, "I'm more of a practical programmer." Then he told me about the video games he was going to make.

(Actually, the worst were the "business-oriented" undergrads who want to waltz right into project management. I wish I had acted like more of an rear end in a top hat towards them.)

pigdog
Apr 23, 2004

by Smythe

Strong Sauce posted:

No it just looks bad to say that in an interview. The algorithm isn't that hard, its just whether you remember it or not so if you say that you sound like someone who doesn't know their poo poo.

Imagine if it went something like
A: Do you know what a Hash is?
B: No, but I would consult an expert.

So should they give the expert the job instead of you? Why should they hire you? Saying this probably gets you crossed off the eligible list, and if you don't understand why then you should take a moment to figure out why that is a bad response to a question.

A: Do you know what menstruation is?
B: Of course! I'm the best menstruator in the region and have years of experience with the best menstruation practices!


They would hire the interviewee because of answers to questions that are actually relevant to the job, such as hashes, not stupid gotchas whose answer mostly depends on whether the interviewee has first read the big book of "Bullshit Questions Interviewers May Ask", or not.

Fine, let's say a programmer may be expected to crank out some kind of solution eventually. (It really isn't so hard.) In the context of a phone interview however, it's stupid bullshit. Someone may be a master in all sorts of difficult areas like parallel programming, and "fail" on that question, yet someone who has read a book on interviewer trivia without being able to code anything, may not. So I would presumed it to be gauge of question about how to approach a problem outside of immediate domain of knowledge, in which case the approaches - in terms of ending up with quality code that does what is needed - would be something like

1. "Why exactly do you need that?"
2. Ask an expert
3. Google for a solution
4. Solve it yourself

It's not (just) about laziness and (just) getting things done faster and better, but as long as the programmer avoids assumptions and instead asks questions when unsure, synchronizing the understanding of the problem, then that's how a lot of bugs and rework is avoided.


edit: Check out this article: http://www.unlimitednovelty.com/2011/12/can-you-solve-this-problem-for-me-on.html

pigdog fucked around with this message at 12:16 on Mar 19, 2012

shrike82
Jun 11, 2005

I'm honestly amazed that CS graduates ITT have never heard of modular exponentiation (or modular arithmetic). It speaks to how lovely the curriculum is at a lot of programs.

shrughes
Oct 11, 2008

(call/cc call/cc)

pigdog posted:

Someone may be a master in all sorts of difficult areas like parallel programming, and "fail" on that question,

It's not like that was the only question asked. All reasonable interviews push questions past the limits of what a candidate can do. Including phone screens (once he's answered the give-away and trivially easy questions, why not ask an easy question like modular exponentiation?).

Also, nobody who is a master of parallel concurrent programming would have trouble with the modular exponentiation question.

Maybe some run-of-the-mill programmer would have trouble with it at first, but not a master of motherfucking parallel concurrent programming.

Fake edit: Parallel programming is easy, it's concurrency that's hard.

Fake edit II: But also, any master of parallel programming would have no problem recognizing how to split a big multiplication into subproblems.

A MIRACLE
Sep 17, 2007

All right. It's Saturday night; I have no date, a two-liter bottle of Shasta and my all-Rush mix-tape... Let's rock.

Shrughes, are you on Github? I'd love to browse your commits, if you don't mind.

pigdog
Apr 23, 2004

by Smythe
How do you go from "expecting to do that stuff on the phone" to "never heard of"?

pigdog fucked around with this message at 13:44 on Mar 19, 2012

etcetera08
Sep 11, 2008

pigdog posted:

How do you go from "expecting to do that stuff on the phone" to "never heard of"?

What? You just said that the question "really isn't so hard."


Oh, wait. This is all making sense. You're the same person that was talking about how impossible it is to work remotely in that other thread. You don't actually have a problem with modular exponentiation, you are just morally offended by the idea of a phone screen. Is that it?

pigdog
Apr 23, 2004

by Smythe
Oh hello, person who is madly offended by the statement that you probably wouldn't be working from home.

shrughes
Oct 11, 2008

(call/cc call/cc)
pigdog, I'm wondering what you ask when you interview developers.


A MIRACLE posted:

Shrughes, are you on Github?

What, and judge me by my code??? Well, only some code I've written years ago is online, and it's at http://samuelhughes.com . (That's not necessarily my real name, by the way, I registered it so that qntm couldn't have it.)

pigdog
Apr 23, 2004

by Smythe
Put it this way. You're a manager with a vacancy for a developer in an average software company, say doing web apps or Android stuff. You create a phone interview script and include that multiplication question. There are two candidates for the job, one passing that particular test, one not. You already have plenty of smart people working for you.

How much more would you be willing to pay the "better" candidate compared to the other? What's the pricetag on whatever that question is supposed to prove?

shrike82
Jun 11, 2005

pigdog posted:

Put it this way. You're a manager with a vacancy for a developer in an average software company, say doing web apps or Android stuff. You create a phone interview script and include that multiplication question. There are two candidates for the job, one passing that particular test, one not. You already have plenty of smart people working for you.

How much more would you be willing to pay the "better" candidate compared to the other? What's the pricetag on whatever that question is supposed to prove?

It's not a matter of price tag - I'd reject the one who'd say "I'd ask a math expert".

pigdog
Apr 23, 2004

by Smythe

shrike82 posted:

It's not a matter of price tag - I'd reject the one who'd say "I'd ask a math expert".

What if the guy who passes asks for $300k and the other guy asks for $30k?

shrughes
Oct 11, 2008

(call/cc call/cc)
This is all a really silly to me because within the first few minutes of the phone screen when you see the candidate write code for the first question, you're already very sure about whether they'll pass.

Also your contrived scenario is absurd, you could ask the same thing about any part of the interview. What is your point?

shrike82
Jun 11, 2005

I think we're through the looking glass if you consider a guy who knows basic modular arithmetic as indicative of someone making 300K.

pigdog
Apr 23, 2004

by Smythe

shrike82 posted:

I think we're through the looking glass if you consider a guy who knows basic modular arithmetic as indicative of someone making 300K.
I'd say we're on the subject of trolling if you claim you'd disqualify an otherwise solid candidate, for an average development job, for failing that question, in the context of a phone interview. 300k vs 30k is an exaggerated example, yet I just asked for a realistic one and you didn't give me one.

What if you already have a dozen people who can easily solve such tasks?

What kind of value would it bring to the organization to pass that test given that, well, it's not hard and there are plenty of people who can easily offer solutions to much harder problems than these?

shrughes
Oct 11, 2008

(call/cc call/cc)
pigdog, I'm wondering what you ask when you interview developers.

pigdog
Apr 23, 2004

by Smythe
We outsource the bulk of our development, so we don't precisely do a lot of actual developer hires, but the process we used for the last guy we did get was
1) Ask for CV and code samples.
2) Give a smallish coding task as "homework".
3) Review the code.

The task, as specified, included non-obvious, intentional ambiguities and contradictions. The speed at which the candidate called us back and asked for clarifications, was a metric.

The same kind of process was used to evaluate potential outsourcing partners, too.

pigdog fucked around with this message at 14:31 on Mar 19, 2012

Stagger_Lee
Mar 25, 2009
I think mostly the argument is just that some CS programs take a genuinely academic approach to the mathematical underpinnings of the field and others are more pre-professional Programming degrees.

I'm biased towards the former because of my undergraduate experience, but it's not really surprising for someone to get a CS degree without ever having thought too much about even relatively simple math, and pretty understandable that they'd be irritated if in an interview the were presented a question for which they were never prepared and which they'd be able to do the job without.

New Yorp New Yorp
Jul 18, 2003

Only in Kenya.
Pillbug
I think this boils down to a difference in job-specific requirements. Shrughes, you seem to be in a position (or multiple positions in succession) that requires high familiarity with algorithms and data structures. A lot of the other folks posting in this thread aren't. I learned all of the things you're saying are important and make you a "good coder" in college, but that was almost a decade ago and I've forgotten most of it because it's totally irrelevant to the jobs I've had.

I've worked with guys who were fantastic coders within our specific problem domain and had no formal computer science education. They couldn't even tell you what a linked list was.

If I interviewed at a place that asked me in-depth questions on data structures and efficient ways to manipulate large numbers, I'd fail horribly. Of course, I probably wouldn't apply for a job like that to begin with, because I know that it doesn't match my skill set.

New Yorp New Yorp fucked around with this message at 21:14 on Mar 19, 2012

shrike82
Jun 11, 2005

I disagree with calling someone a "fantastic coder" if they can't handle algorithms or data structures.

Seriously, I'm just having a hard time even imagining a coding job which doesn't require some level of knowledge of algorithms or data structures. What would software they write even look like?

shrike82 fucked around with this message at 15:37 on Mar 19, 2012

mustermark
Apr 26, 2009

"Mind" is a tool invented by the universe to see itself; but it can never see all of itself, for much the same reason that you can't see your own back (without mirrors).

shrike82 posted:

I disagree with calling someone a "fantastic coder" if they can't handle algorithms or data structures.

Seriously, I'm just having a hard time even imagining a coding job which doesn't require some level of knowledge of algorithms or data structures. What would software they write even look like?

Having worked on several academic programming projects let me assure you that it's not pretty at all.

Just yesterday my friend was telling me his co-worker, an Indian grad student, was caught passing member variables between private methods and (in AS3) was passing the count of arrays around with the arrays themselves.

Strong Sauce
Jul 2, 2003

You know I am not really your father.





pigdog posted:

A: Do you know what menstruation is?
B: Of course! I'm the best menstruator in the region and have years of experience with the best menstruation practices!


They would hire the interviewee because of answers to questions that are actually relevant to the job, such as hashes, not stupid gotchas whose answer mostly depends on whether the interviewee has first read the big book of "Bullshit Questions Interviewers May Ask", or not.

Fine, let's say a programmer may be expected to crank out some kind of solution eventually. (It really isn't so hard.) In the context of a phone interview however, it's stupid bullshit. Someone may be a master in all sorts of difficult areas like parallel programming, and "fail" on that question, yet someone who has read a book on interviewer trivia without being able to code anything, may not. So I would presumed it to be gauge of question about how to approach a problem outside of immediate domain of knowledge, in which case the approaches - in terms of ending up with quality code that does what is needed - would be something like

1. "Why exactly do you need that?"
2. Ask an expert
3. Google for a solution
4. Solve it yourself

It's not (just) about laziness and (just) getting things done faster and better, but as long as the programmer avoids assumptions and instead asks questions when unsure, synchronizing the understanding of the problem, then that's how a lot of bugs and rework is avoided.


edit: Check out this article: http://www.unlimitednovelty.com/2011/12/can-you-solve-this-problem-for-me-on.html
Did you not read the rest of my post or were you too angry and stopped right after the quoted part of my post?

I am not even sure what menstruation has to do with programming so your example, maybe it is way over my head.

But your reply is funny for me because I think the question is kind of dumb especially if the interviewer offers no help. And this problem alone shouldn't kill your chances because maybe you haven't looked at modular exponents in forever and only know some vague steps to achieve it.

But maybe you will say something real dumb during the question and the interviewer can cross you off their list of candidates. I haven't interviewed many people but hearing #2 and #3 seem to be immediate "don't hire" answers regardless of whether you are in the 'right' or wrong. The interviewer is trying to evaluate your fitness as a software engineer, so consider how that reply reflects on you as a software engineer.

And I think saying #1 is perfectly fine... after you answer the question.

Are these questions sometimes a little bullshit? Yes. So you can either decide the company is complete bullshit and not continue further with the interview process or you can just try to answer it to the best of your abilities and see if the company is worth working for. If you're just antagonistic about the whole process that doesn't bode well for their perception of your sociability. No one wants a guy who is nitpicky. So politely tell them that you don't feel you are a good fit for the company, thank them for their time and hang up.

Edit: I've read that article before. If you do have a GitHub or some other proof of your code, then yes, I agree maybe these questions are dumb to ask. But if your GitHub is pretty good you'll probably get to skip a lot of the interview process.

Strong Sauce fucked around with this message at 19:11 on Mar 19, 2012

theratking
Jan 18, 2012

shrughes posted:

It's not like that was the only question asked.

It kind of was. It was a very quick phone screen, and after the initial resume talk (and subtracting the final question and answer session), the interview was basically about this one problem, which was frustrating because I was really stressed out. The interview before this one I answered 2 questions, but this one we only had time for one.

I think if it were another setting, like an in person interview, I would've done far better, because I do know the basics of a lot of this stuff. The environment was not very conducive to applying my knowledge on something I hadn't done before.

New Yorp New Yorp
Jul 18, 2003

Only in Kenya.
Pillbug

shrike82 posted:

I disagree with calling someone a "fantastic coder" if they can't handle algorithms or data structures.

Seriously, I'm just having a hard time even imagining a coding job which doesn't require some level of knowledge of algorithms or data structures. What would software they write even look like?

It's not a matter of "can't handle", it's a matter of them not having any formal background in the area. They know that hash tables have very fast data access, but they probably don't know a drat thing about collisions or hashing algorithms, or big O.

I was discussing a problem with a former boss of mine, who is one of the best developers I've met, and he suggested we use a data structure where each node contains a reference to the next node. I said "Oh, a linked list?" and he shrugged. He just didn't have the CS background to know that the data structure he thought of already had a name.

Volte
Oct 4, 2004

woosh woosh

Ithaqua posted:

It's not a matter of "can't handle", it's a matter of them not having any formal background in the area. They know that hash tables have very fast data access, but they probably don't know a drat thing about collisions or hashing algorithms, or big O.

I was discussing a problem with a former boss of mine, who is one of the best developers I've met, and he suggested we use a data structure where each node contains a reference to the next node. I said "Oh, a linked list?" and he shrugged. He just didn't have the CS background to know that the data structure he thought of already had a name.
Even if you don't have a formal CS background, if you are a 'good' developer, you have at least encountered those things on your own. It's almost impossible to be a good software developer without knowing anything about the internal details of data structures (or the system itself). For example, C# forces objects to provide their own hashes -- it's one of the only things that every object in the entire object hierarchy can do. How can a developer be expected to produce a good hash without knowing how the hash is used and what makes a good hash function? What about searching and sorting, probably the two most fundamental domains of computation? A naive search algorithm can mean the difference between a program working and not working. If a developer doesn't have the background to handle cases like that, he isn't a good developer. It doesn't matter how many languages he knows or how many Javascript frameworks he has implemented a blog with. It seems like a lot of people are saying "It's not okay that we should be expected to know this in real life, because we didn't cover it in our CS program" when really what you should be saying is "It's not okay that we didn't cover this in our CS program, because we are expected to know this in real life".

Maybe everyone should read Niklaus Wirth's book Algorithms + Data Structures = Programs. Or at least read the title of the book.

New Yorp New Yorp
Jul 18, 2003

Only in Kenya.
Pillbug

Volte posted:

:words:

I'm not arguing that algorithms and data structures aren't important, and you're right: Good developers who aren't familiar with these things will learn about them, at least in general. I'm just arguing that people who don't know about these things in excruciating, CS-graduate level detail aren't automatically bad developers. I haven't had to do a drat thing with trees of any sort since college. Ergo, I remember next to nothing about trees. If I'm interviewing for a job that I'm a perfect fit for, and they ask me a question about the inner workings of trees, I'm going to say "I don't remember". If that's the sole disqualifying factor, and that job has nothing to do with trees, then that's a lovely interview question.

If your team is working with a lot of custom data structure implementations and non-standard searching/sorting algorithms, sure, disqualify a developer based on not knowing relevant details about that sort of thing. Their skills and experience don't mesh with what you're looking for.

shrike82
Jun 11, 2005

There's a huge continuum between "excruciating, CS-graduate level detail" and " I remember next to nothing about trees". Absolutely no one in the thread has argued that the former is necessary.

Also, not knowing something as fundamental to CS data structures as trees is a big ding in my view.

I'm really curious about the nature of the development work you do, Ithaqua.

shrike82 fucked around with this message at 23:53 on Mar 19, 2012

New Yorp New Yorp
Jul 18, 2003

Only in Kenya.
Pillbug

shrike82 posted:

There's a huge continuum between "excruciating, CS-graduate level detail" and " I remember next to nothing about trees". Absolutely no one in the thread has argued that the former is necessary.

Also, not knowing something as fundamental to CS data structures as trees is a big ding in my view.

I'm really curious about the nature of the development work you do, Ithaqua.

I've been all over the place, but pretty much entirely in the .NET world. I worked on a medical claims clearinghouse, a website that sells women's underwear (:quagmire:), and I'm currently working on a project for a client that integrates with Visual Studio and Team Foundation Server to help with the analysis of application exceptions. I think the .NET world is especially vulnerable to implementation detail atrophy, since the framework has just about every basic data structure implemented out of the box.

Of course, now I feel ashamed that I've forgotten so much from college and I'm going to dig my data structures textbook out of the attic and re-read it. :)

shrughes
Oct 11, 2008

(call/cc call/cc)

Ithaqua posted:

I think this boils down to a difference in job-specific requirements. Shrughes, you seem to be in a position (or multiple positions in succession) that requires high familiarity with algorithms and data structures. A lot of the other folks posting in this thread aren't. I learned all of the things you're saying are important and make you a "good coder" in college, but that was almost a decade ago and I've forgotten most of it because it's totally irrelevant to the jobs I've had.

You have to remember that the position I'm defending is that asking basic algorithms and data structures questions is a legitimate thing to do, not that everybody needs to be an algorithms and data structures whiz. I don't believe that you have to be. I can point to coworkers I've had that didn't have a CS degree and could hardly tell a linked list from an array, who I'd say was a very good developer. All I'm defending is that it's reasonable to measure their ability in this direction, and that modular exponentiation is not a "wank" question.

(I do think it's a suboptimal question, especially if it's the first question on a phone screen... I think phone screens should instead ask for the coding some simple tree-based algorithm on an etherpad clone as the first question.)

NovemberMike
Dec 28, 2008

That's a dumb question because the large numbers are going to confuse people. Interviews are stressful and good questions don't try to exacerbate that. Using 2^100 and the five least significant digits, or even 2^x and the n least significant digits would do just as well at presenting the same problem without getting anyone bogged down in number specifics.

It's all very obvious if you've ever implemented BigInt or whatever (IIRC we did that in our first year) but it's going to confuse a lot of people who could answer it after checking a book for ten minutes.

Volte
Oct 4, 2004

woosh woosh

NovemberMike posted:

That's a dumb question because the large numbers are going to confuse people. Interviews are stressful and good questions don't try to exacerbate that. Using 2^100 and the five least significant digits, or even 2^x and the n least significant digits would do just as well at presenting the same problem without getting anyone bogged down in number specifics.

It's all very obvious if you've ever implemented BigInt or whatever (IIRC we did that in our first year) but it's going to confuse a lot of people who could answer it after checking a book for ten minutes.
The large number is actually making the question easier, because it's completely obvious that the naive solution won't work. It's a huge hint as to what you should do. It actually reduces the space of possible solutions, thus making the question easier. Especially since you don't seem to have understood it yourself, since the solution has nothing to do with BigInts.

NovemberMike
Dec 28, 2008

Volte posted:

The large number is actually making the question easier, because it's completely obvious that the naive solution won't work. It's a huge hint as to what you should do. It actually reduces the space of possible solutions, thus making the question easier. Especially since you don't seem to have understood it yourself, since the solution has nothing to do with BigInts.

Easier and harder is relative, if I get a small number I can work through the math in my head and with a non-specific variable I am going to look at the special case. If I see a large number there's a possibility that I'm going to fixate on the number itself temporarily, when it's largely unimportant (when I saw an example that was 2^123456 or whatever my first thought went to whether the power of two was important).

Having done BigInt is useful because the logic is essentially the same as with BigInt.exponent() except that you discard the extra digits.

I could be missing something but if it's how I'm thinking then any first year student should be able to solve the problem but it's going to stump a lot of competent people when you ambush them with it.

shrughes
Oct 11, 2008

(call/cc call/cc)

NovemberMike posted:

That's a dumb question because the large numbers are going to confuse people.

You put the word "dumb" in the wrong place.

Don Mega
Nov 26, 2005
A lot of hostility over such an unimportant issue.

shrike82
Jun 11, 2005

Heh, whether algorithms and data structures are intrinsic to good software development = unimportant.

It never ceases to amaze me how many lovely developers are out there in the wild.

Don Mega
Nov 26, 2005

shrike82 posted:

Heh, whether algorithms and data structures are intrinsic to good software development = unimportant.

It never ceases to amaze me how many lovely developers are out there in the wild.
Obviously data structures and algorithms are a fundamental of software development. Leave it to a bunch of computer science goons to take a problem about modulo arithmetic personally and start giant debate. My comment wasn't really targeted at you though... even if your last few comments have been overly smug and generally unbearable.

Don Mega fucked around with this message at 02:35 on Mar 20, 2012

shrike82
Jun 11, 2005

So speaks the guy looking for a job. I guess when your interview comes up and you can't answer a modular arithmetic question, you can tell the interviewer you're not a goon.

Don Mega
Nov 26, 2005

shrike82 posted:

So speaks the guy looking for a job. I guess when your interview comes up and you can't answer a modular arithmetic question, you can tell the interviewer you're not a goon.
Yes I am looking for a job because I haven't even graduated yet. You hurt my feelings :(

Adbot
ADBOT LOVES YOU

Safe and Secure!
Jun 14, 2008

OFFICIAL SA THREAD RUINER
SPRING 2013
I would say that I can't answer the question, but I'll consult a goon who can.

E: But really, if I want to work a more "data structures and algorithms"-y place, and I feel like my school is more of a "more pre-professional Programming degree" place, would simply finishing my algorithms textbook bring me up to the level of ability expected for such a job?

I guess my school's approach isn't horrible, as everything in my area seems to be about gluing together GUI components in .Net. That just seems really boring to me, though.

Safe and Secure! fucked around with this message at 03:10 on Mar 20, 2012

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply