Tuesday, June 28, 2011

Finding Stack Direction for a Machine

How would you find out if a machine’s stack grows up or down in memory?

You need to call a function with one parameter, and create one more local variable, the parameters would be pushed on stack and also the local variables would be created on stack, hence, if your parameters address and locals address would give you the result.

Here is the code of subroutine for your reference.

void sub_routine(int a) { 
int b;
b = a;
if(&b < &a)
printf("Stack Grows Downward!");
else
printf("Stack Grows Upward!");
}

int main() {
sub_routine(10);
return 0;
}

If Richard Feynman applied for a job at Microsoft

Interviewer: Now comes the part of the interview where we ask a question to test your creative thinking ability. Don't think too hard about it, just apply everyday common sense, and describe your reasoning process.

Here's the question: Why are manhole covers round?

Feynman: They're not. Some manhole covers are square. It's true that there are SOME round ones, but I've seen square ones, and rectangular ones.

Interviewer: But just considering the round ones, why are they round?

Feynman: If we are just considering the round ones, then they are round by definition. That statement is a tautology.

Interviewer: I mean, why are there round ones at all? Is there some particular value to having round ones?

Feynman: Yes. Round covers are used when the hole they are covering up is also round. It's simplest to cover a round hole with a round cover.

Interviewer: Can you think of a property of round covers that gives them an advantage over square ones?

Feynman: We have to look at what is under the cover to answer that question. The hole below the cover is round because a cylinder is the strongest shape against the compression of the earth around it. Also, the term "manhole" implies a passage big enough for a man, and a human being climbing down a ladder is roughly circular in cross-section. So a cylindrical pipe is the natural shape for manholes. The covers are simply the shape needed to cover up a cylinder.

Interviewer: Do you believe there is a safety issue? I mean, couldn't square covers fall into the hole and hurt someone?

Feynman: Not likely. Square covers are sometimes used on prefabricated vaults where the access passage is also square. The cover is larger than the passage, and sits on a ledge that supports it along the entire perimeter. The covers are usually made of solid metal and are very heavy. Let's assume a two-foot square opening and a ledge width of 1-1/2 inches. In order to get it to fall in, you would have to lift one side of the cover, then rotate it 30 degrees so that the cover would clear the ledge, and then tilt the cover up nearly 45 degrees from horizontal before the center of gravity would shift enough for it to fall in. Yes, it's possible, but very unlikely. The people authorized to open manhole covers could easily be trained to do it safely. Applying common engineering sense, the shape of a manhole cover is entirely determined by the shape of the opening it is intended to cover.

Interviewer (troubled): Excuse me a moment; I have to discuss something with my management team. (Leaves room.)

(Interviewer returns after 10 minutes)

Interviewer: We are going to recommend you for immediate hiring into the marketing department

Source: http://www.sellsbrothers.com/interview?content=question.htm

Some ILLEGAL Questions !

  • What political party are you affiliated with?
  • Are you a member of the local country club?
  • Do you go to church regularly?
  • Are you currently married? Are you divorced? What is your sexual orientation?
  • What are your outstanding debts?
  • What charities are you involved with?
  • Do you drink?
  • Do you have a boyfriend?
  • Your last name is _______. What kind of name is that?
  • Do you have a girlfriend / boyfriend / Are you planning to have children
  • Do you have a physical disability?
  • Do you have any health problems?
  • Have you ever been convicted of a felony?
  • How many children do you have?
  • How old are you?
  • This is a Christian company. Do you think that you can be happy working here?
  • What does you father/mother do for a living?
  • What is your first language?
  • What is your IQ?
  • How much do you weigh?
  • What's your religion?

Few Google Puzzles

How do you get a fair result with an unfair coin? i.e it is expected to come more heads than tails.

Answer: Take HT as Heads, and TH as Tails, and Other times re flip the coin, now the probabilities are same.

You have five pirates, ranked from 5 to 1 in descending order. The top pirate has the right to propose how 100 gold coins should be divided among them. But the others get to vote on his plan, and if fewer than half agree with him, he gets killed. How should he allocate the gold in order to maximize his share but live to enjoy it? (Hint: One pirate ends up with 98 percent of the gold.)

Additional Note:

  • There are 5 rational pirates, A, B, C, D and E. They find 100 gold coins. They must decide how to distribute them.
  • The pirates have a strict order of seniority: A is superior to B, who is superior to C, who is superior to D, who is superior to E.
  • The pirate world's rules of distribution are thus: that the most senior pirate should propose a distribution of coins. The pirates, including the proposer, then vote on whether to accept this distribution. If the proposed allocation is approved by a majority or a tie vote, it happens. If not, the proposer is thrown overboard from the pirate ship and dies, and the next most senior pirate makes a new proposal to begin the system again.
  • Pirates base their decisions on three factors. First of all, each pirate wants to survive. Second, each pirate wants to maximize the number of gold coins he receives. Third, each pirate would prefer to throw another overboard, if all other results would otherwise be equal

Answer: It might be expected intuitively that Pirate A will have to allocate little if any to himself for fear of being voted off so that there are fewer pirates to share between. However, this is as far from the theoretical result as is possible.

This is apparent if we work backwards: if all except D and E have been thrown overboard, D proposes 100 for himself and 0 for E. He has the casting vote, and so this is the allocation.

If there are three left (C, D and E) C knows that D will offer E 0 in the next round; therefore, C has to offer E 1 coin in this round to make E vote with him, and get his allocation through. Therefore, when only three are left the allocation is C:99, D:0, E:1.

If B, C, D and E remain, B knows this when he makes his decision. To avoid being thrown overboard, he can simply offer 1 to D. Because he has the casting vote, the support only by D is sufficient. Thus he proposes B:99, C:0, D:1, E:0. One might consider proposing B:99, C:0, D:0, E:1, as E knows he won't get more, if any, if he throws B overboard. But, as each pirate is eager to throw each other overboard, E would prefer to kill B, to get the same amount of gold from C.

Assuming A knows all these things, he can count on C and E's support for the following allocation, which is the final solution:
A: 98 coins
B: 0 coins
C: 1 coin
D: 0 coins
E: 1 coin

Also, A:98, B:0, C:0, D:1, E:1 or other variants are not good enough, as D would rather throw A overboard to get the same amount of gold from B.

Note: The game can easily be extended to up to 200 pirates (or further even if you don't increase the amount of gold).

You have to get from point A to point B. You don’t know if you can get there. What would you do?

Best Answer: Well, point A is where you are now. You know how you go into a mall, and they have the "mall map" inside a case and you look for the "you are here" spot? That's your reference point, and if you have even the slightest sense of direction, you can find the store you want on the map and start walking to it.

Next...point B. In the same scenario above point B would be the store you looked for and started walking toward. So, in other words, point B is where you want to go. In the mall example you could locate the store and go in the exact opposite direction following only the outer walls and still get there. Not very effective, but the end result would be successful...albeit very delayed.

Or, you could locate the store, point yourself in that direction, and walk straight to it and get there much faster and much more efficiently. Successful end result and with a lot of extra time to spare when compared to the walking the other way. Right?

Something else that can come up even in your "direct" walk to point B is distraction. After all; you're in a mall. You're bound to see some shoes you just "got to have". Or you'll stop and drool over that awesome surround sound digital megaDef home theater system. Maybe you'll decide to stop and sample that divine cinnamon roll that's been wafting up your nose for the past 15 minutes. You get the idea. Distractions can keep you from arriving at your desired location. If not for good, at least for a significantly postponed time.

In your ongoing marketing efforts you need to get from point A (where you are now) to point B (your desired end result, location, or outcome) in an efficient, timely manner to be as effective and successful as possible. So you'll need to keep some key points in mind:

  • Know (not think you know) where you are
  • Know (not think you know) where you want to go
  • See clearly where "point B" is or clearly, vividly visualize yourself there
  • Be aware of what your distractions are or could be and build up barriers against them

And don't stop until you get there...then you'll begin to prepare for a new "point B"
This isn't mystical. It isn't magical. It isn't mind control or mind over matter. It's the good ol' work ethic. You keep working at it until you achieve it. I don't buy into the "work smarter not harder" cliche' either. No way. You work smarter AND harder.

Increase your skills consistently so you can achieve more in less time. Learn more software programs to streamline your efficiency. But then you gotta (as we used to say in high school choir) practice, practice, practice! You don't get better simply by "being smarter". I like to say: Education without Application leads to a Continuation of Frustration. So apply that wonderful brain of yours to the task at hand and do it until you do it better than anybody.

Once you've developed this approach to your efforts...your sphere of influence will be made up of bold, straight lines you can walk with confidence.

Imagine you have a closet full of shirts. It’s very hard to find a shirt. So what can you do to organize your shirts for easy retrieval?

I would argue that the COLOR of the shirt is less important than the OCCASION you wear the shirt for.The best top level hash to make on the shirts would be when the shirt is appropriate to wear. Divide the shirts into Work Shirts, Leisure Shirts, and Gym Shirts (insert other categories as you see fit). Then when it’s time to select a shirt for work in the morning, you don’t have to think about what COLOR you want to wear. Maybe then organize the work shirts by color.

Every man in a village of 100 married couples has cheated on his wife. Every wife in the village instantly knows when a man other than her husband has cheated, but does not know when her own husband has. The village has a law that does not allow for adultery. Any wife who can prove that her husband is unfaithful must kill him that very day. The women of the village would never disobey this law. One day, the queen of the village visits and announces that at least one husband has been unfaithful. What happens?

Day1: nothing happens. As every woman would be expecting that one of the men, she knows for adultery should die. No one would kill her own husband.
Day2: When no one dies, each woman would instantly come to know that her husband has cheated, and each woman would kill their husband. So everyone dies.

If the probability of observing a car in 30 minutes on a highway is 0.95, what is the probability of observing a car in 10 minutes (assuming constant default probability)?

Let p be the probability of seeing a car in a given 10 minutes. Then (1-p) is the probability of not seeing a car in 10 minutes, and (1-p)3 is the probability of not seeing a car in 30 minutes. But:
     (1-p)3 = 0.05
--> p = 0.63159...

If you look at a clock and the time is 3:15, what is the angle between the hour and the minute hands?

Assume for now the angle is 0 degrees, but hour hand moves about 0.5 degrees in one min, and in 15 minutes he moves by 7.5 degrees, so the angle is 7.5 degrees.

Monday, June 27, 2011

Google Interview Questions that makes you feel stupid

Why are manhole-covers round in shape?

The question of why manhole covers are typically round, at least in the U.S., was made famous by Microsoft when they began asking it as a job-interview question. Originally meant as a psychological assessment of how one approaches a question with more than one correct answer, the problem has produced a number of alternate explanations

Reasons for the shape include:

  • A round manhole cover cannot fall through its circular opening, whereas a square manhole cover may fall in if it were inserted diagonally in the hole. (A Reuleaux triangle or other curve of constant width would also serve this purpose, but round covers are much easier to manufacture. The existence of a "lip" holding up the lid means that the underlying hole is smaller than the cover, so that other shapes might suffice.)
  • Round tubes are the strongest and most material-efficient shape against the compression of the earth around them, and so it is natural that the cover of a round tube assumes a circular shape.
  • Similarly, it is easier to dig a circular hole and thus the cover is also circular.
  • The bearing surfaces of manhole frames and covers are machined to assure flatness and prevent them from becoming dislodged by traffic. Round castings are much easier to machine using a lathe.
  • Circular covers do not need to be rotated to align them when covering a circular manhole.
  • Human beings have a roughly circular cross-section.
  • A round manhole cover can be more easily moved by being rolled.
  • A round manhole cover is cheapest to manufacture related to other shapes because requires the least amount of metal to cover an opening wide enough for a person to get through.
  • Most manhole covers are made by a few large companies. A different shape would have to be custom made.
  • The round manhole cover can more easily accommodate a Ninja Turtles shell

How many golf balls can fit in a school bus?

This is one of those questions Google asks just to see if the applicant can explain the key challenge to solving the problem.

I figure a standard school bus is about 8ft wide by 6ft high by 20 feet long - this is just a guess based on the thousands of hours I have been trapped behind school buses while traffic in all directions is stopped.

That means 960 cubic feet and since there are 1728 cubic inches in a cubit foot, that means about 1.6 million cubic inches. 

I calculate the volume of a golf ball to be about 2.5 cubic inches (4/3 * pi * .85) as .85 inches is the radius of a golf ball. 

Divide that 2.5 cubic inches into 1.6 million and you come up with 660,000 golf balls. However, since there are seats and crap in there taking up space and also since the spherical shape of a golf ball means there will be considerable empty space between them when stacked, I'll round down to 500,000 golf balls. 

Which sounds ludicrous. I would have spitballed no more than 100k. But I stand by my math. 

How much should you charge to wash all the windows in Seattle?

This is one of those questions where the trick is to come up with an easier answer than the one that's seemingly being called for. We'd say. "$10 per window."

In a country in which people only want boys every family continues to have children until they have a boy. If they have a girl, they have another child. If they have a boy, they stop. What is the proportion of boys to girls in the country?

This one caused quite the debate, but we figured it out following these steps:

  • Imagine you have 10 couples who have 10 babies. 5 will be girls. 5 will be boys. (Total babies made: 10, with 5 boys and 5 girls)
  • The 5 couples who had girls will have 5 babies. Half (2.5) will be girls. Half (2.5) will be boys. Add 2.5 boys to the 5 already born and 2.5 girls to the 5 already born. (Total babies made: 15, with 7.5 boys and 7.5 girls.)
  • The 2.5 couples that had girls will have 2.5 babies. Half (1.25) will be boys and half (1.25) will be girls. Add 1.25 boys to the 7.5 boys already born and 1.25 girls to the 7.5 already born. (Total babies: 17.5 with 8.75 boys and 8.75 girls).

And so on, maintianing a 50/50 population.

How many piano tuners are there in the entire world?

We'd answer "However many the market dictates. If pianos need tuning once a week, and it takes an hour to tune a piano and a piano tuner works 8 hours a day for 5 days a week 40 pianos need tuning each week. We'd answer one for every 40 pianos."

On Wikipedia, they call this a Fermi problem.

The classic Fermi problem, generally attributed to Fermi, is "How many piano tuners are there in Chicago?" A typical solution to this problem would involve multiplying together a series of estimates that would yield the correct answer if the estimates were correct. For example, we might make the following assumptions:

  • There are approximately 5,000,000 people living in Chicago.
  • On average, there are two persons in each household in Chicago.
  • Roughly one household in twenty has a piano that is tuned regularly.
  • Pianos that are tuned regularly are tuned on average about once per year.
  • It takes a piano tuner about two hours to tune a piano, including travel time.
  • Each piano tuner works eight hours in a day, five days in a week, and 50 weeks in a year.

From these assumptions we can compute that the number of piano tunings in a single year in Chicago is

(5,000,000 persons in Chicago) / (2 persons/household) × (1 piano/20 households) × (1 piano tuning per piano per year) = 125,000 piano tunings per year in Chicago.

And we can similarly calculate that the average piano tuner performs

(50 weeks/year)×(5 days/week)×(8 hours/day)×(1 piano tuning per 2 hours per piano tuner) = 1000 piano tunings per year per piano tuner.

Dividing gives

(125,000 piano tuning per year in Chicago) / (1000 piano tunings per year per piano tuner) = 125 piano tuners in Chicago.

A famous example of a Fermi-problem-like estimate is the Drake equation, which seeks to estimate the number of intelligent civilizations in the galaxy. The basic question of why, if there are a significant number of such civilizations, ours has never encountered any others is called the Fermi paradox.

Design an evacuation plan for San Francisco

Again, this one is all about the interviewer seeing how the interviewee would attack the problem. We'd start our answer by asking, "What kind of disaster are we planning for?"

How many times a day does a clock’s hands overlap?

22 times, AM, 12, 1.05, 2.06 … 10.55, (11 times) and PM same number, so total 22 times.

Explain the significance of "dead beef"

DEADBEEF is a hexadecimal value that has was used in debugging back in the mainframe/assembly days because it was easy to see when marking and finding specific memory in pages of hex dumps. Most computer science graduates have seen this at least in their assembly language classes in college and that's why they expect software engineers to know it.

A man pushed his car to a hotel and lost his fortune. What happened?

He landed on Boardwalk. (Painful, right?)

You need to check that your friend, Bob, has your correct phone number but you cannot ask him directly. You must write the question on a card which and give it to Eve who will take the card to Bob and return the answer to you. What must you write on the card, besides the question, to ensure Bob can encode the message so that Eve cannot read your phone number?

Since you are just "checking," you ask him to call you at a certain time. If he doesn't, he doesn't have your number.

Too simple? A reader suggest: "In that case you need a check-sum. Have Bob add all the digits of your phone number together, write down the total, and pass that back to you."

You're the captain of a pirate ship, and your crew gets to vote on how the gold is divided up. If fewer than half of the pirates agree with you, you die. How do you recommend apportioning the gold in such a way that you get a good share of the booty, but still survive?

You divide the booty evenly between the top 51% of the crew.

You have eight balls all of the same size, 7 of them weigh the same, and one of them weighs slightly more. How can you find the ball that is heavier by using a balance and only two weighing?

Take 6 of the 8 balls and put 3 on each side of the scale. If the heavy ball isn't in the group of 6, you know it's one of the remaining 2 and so you put those two in the scale and determine which one. If the heavy ball is in the 6, you have narrowed it down to 3. Of those 3, pick any 2 and put them on the scale. If the heavy ball is in that group of 2, you know which one it is. If both balls are of equal weight, then the heavy ball is the one you sat to the side

You are given 2 eggs, You have access to a 100-story building. Eggs can be very hard or very fragile means it may break if dropped from the first floor or may not even break if dropped from 100th floor. Both eggs are identical. You need to figure out the highest floor of a 100-story building an egg can be dropped without breaking. The question is how many drops you need to make. You are allowed to break 2 eggs in the process

The maximum egg drops for this method is 14 times. Instead of partitioning the floors by 10, Start at the 14th floor, and then go up 13 floors, then 12, then 11, then 10, 9, 8, 7, 6, 5, 4 until you get to the 99th floor, then here.  If the egg were to break at the 100th floor, it would take 12 drops (or 11 if you assume that it would break at the 100th floor).  Say, for example, that the 49th floor was the highest floor, the number of drops would be the 14th, 27th, 39th, 50th (the egg would break on the 50th floor) plus the 40, 41,42,43,44,45,46,47,48, and 49th floor for a total of 14 drops.

Explain a database in three sentences to your eight-year-old nephew

The point here is to test the applicant's ability to communicate complex ideas in simple language. Here's our attempt, "A database is a machine that remembers lots of information about lots of things. People use them to help remember that information. Go play outside."

You are shrunk to the height of a nickel and your mass is proportionally reduced so as to maintain your original density. You are then thrown into an empty glass blender. The blades will start moving in 60 seconds. What do you do?

This one is all about the judging interviewee's creativity. We'd try to break the electric motor.

Windows Live Writer for Blog

I have been struggling to post into my blog from Microsoft Word 2007, as it would be a nightmare to write a article in word and format it once, and again do the same in Blogger, just because it has different formatting, and it cannot be a just copy paste for that matter.

On a Monday evening, I wanted to post some stuff which went into few pages on the word, so I did not feel like formatting again on the blogger, after a an hour of research I understand that MS Word 2007 does not have full support for blogging from word, including picture, so its no point trying it.

There is something called, Windows Live Writer, which is a MS tool which can be used to blog, which also supports adding pictures, So I downloaded and configured it, and this one is sample post from the Writer, and also to give some information about the live writer.

Live writer comes with the Live essential tools, which comes free (mostly for legal version of windows). It can be downloaded from here.

There is one thing you need to remember while configuring for the first time, do not give the blog address correctly, just give http://text. Otherwise it seem to mess up things, later in steps things can be configured manually. So don’t worry. All the best. Happy Blogging.

Monday, June 20, 2011

Big Endian and Little Endian


  • What is the difference between big endian and little endin machines

The data ordering at the memory is different for them, in little endian higher address have the most significant byte and lower have the least signifincant byte. and otherway round in case of big endian machines.

  • How do u determine a processor to be little endian or big endian, write a small program for it.

int a = 1;
if( *((char *)&a) == 1) 
    printf("Little endian");
else
    printf("Big Endian");


This can also be done using an eum as shown below


enum
{ 
  int a;
  char c[4];
}

a = 1;
if(char[1] == 1) 
    printf("Little Endian");
else
    printf("Big Endian");

Thursday, June 9, 2011

Traverse a tree without recursion

The basic problem of traversing a tree requires recursion. If you dont have recursion then you should have a mechanism to save either side of the tree on to a temporary location, this can be done with a stack.
So the algorithm should be

1) traverse the node, if there is right push on to stack, and go to left node
2) if there is no left then pop from the stack and go to that node.
3) do this til all the nodes are exhausted. i.e. till your node pointer is null

Find the code here, for your reference. Push and Pop can be implemented as a simple stack methods.

/* Traverse a tree without recursion */
/* The basic idea is to use a stack for storing the other side of the tree when going in one direction */

void traverse_without_recursion(node *head) {
    node *next = head;
    while(next != NULL) {
        printf("%d", next->data);
        if(next->right)
            PUSH((int)(next->right));
        if(next->left)
            next = next->left;
        else next = (node *) POP();
    }
}

Write a program to find the max and second max


This is little tricky, but not difficult. easiest way to do this is to sort the array and then find the answer. But that not expected out of you.

The algorithm here is take thefirst element as the max and second max. Then loop through all elements

  1. If the number is larger than max then make it max, and make old max to second max.
  2. Else if it is more than second max then make it the second max.
  3. In all other cases drop that number
Here goes the code for your reference.

/*
** Write a program for finding the max and second max 
** of an array of given size */

#define SIZE 10

int main(void)
{
    int array[SIZE] = {10, 5, 16, 2, 1, 2, 3, 18, 21, 4};
    int i, max, sec_max;

    max  = sec_max = array[0];

    for(i=0; i< SIZE; i++)
    {
        if(array[i] > max) {
            sec_max = max;
            max = array[i];
        }
        else if(array[i] > sec_max)
            sec_max = array[i];
    }

    printf("max =  %d, sec max = %d", max, sec_max);
}

Saturday, June 4, 2011

Error message when you click a hyperlink in Outlook

Today morning, When I open my outlook for joining a meeting, I was not able to click the link for meeting, it was working when I pasted the same on browser,  When you click a hyper link in Microsoft Outlook, you may receive the following error message: "This operation has been cancelled due to restrictions in effect on this computer. Please contact your system administrator." I was clueless as everything was working fine a day before. Did some search on google and found that microsoft has published a solution for the same.

This was said to be a problem due to some corrupted registry keys after the internet explorer upgrade, and there is patch executable released by microsoft which would fix the problem for you, check this link

If you find any issues after this, do let me now :)

Wednesday, June 1, 2011

Fix for Scroll Issue with Picasa 3.8 on Windows 7

Recently I faced a strange issue with picasa, the photo organizer/editor from Google. The scroll does not work !!, It was working perfectly fine on my personal laptop, but was not working on my office laptop, and scroll works fine in rest of the applications. I was thinking there is something to do with the installation, but reinstall also did not solve the problem,

Later I found that, Most (almost all) mouse drivers cause mouse wheel events with a "delta" of ±120. This is an arbitrary value that has been choosen by Microsoft in the past to allow finer control.

Since then, several programs use that value directly to test whether the mouse has been scrolled down or up (delta / 120 == 1 -> down, delta / 120 == -1 -> up, or something like that).

However, the Intellipoint software causes mouse wheel events with smaller "delta" value (the expected finer grain control), and programs which use the 120 value that way just fail to register the wheel movement, because in integral values, 30 / 120 = 0...

Let's hope Picasa developers would fix this issue soon, by modifying the mouse wheel handling method.

There are ways you can fix this issue temporarily, one is by using the Autohotkey. Autohotkey is a program you run in the background, which loads simple or complex scripts controlling the mouse and keyboard inputs, as well as other wanted behaviors in your Windows system. You can intercept the mouse wheel event and change the delta value before passing to a particular program, so if you make it 120 again, you would solve the issue.
  1. Download and install AutoHotkey (http://www.autohotkey.com)
  2. Right-click an empty spot on your desktop or in a folder of your choice.
  3. In the menu that appears, select New -> AutoHotkey Script. (Alternatively, select New -> Text Document.)
  4. Type a name for the file, ensuring that it ends in .ahk. For example: Test.ahk
  5. Right-click the file and choose Edit Script.

In the window that appears (likely Notepad), copy the lines of the script above. Save your document.

AutoHotkey does not run by itself, it runs a script. So you need to put the script file you just created in Startup, and it will start automatically when Windows start. This should fix your mousewheel problems with Picasa.

I have found that the latest IntelliPoint 8.0 software (released August 2010) fixes the scrolling issue. It also does the same thing, it detects that the picasa is running and changes the delta value to 120 and things would work just perfct

You can download the latest version of Intellipoint software for your mouse from here,