a:6:{i:0;s:21757:"						<section class="headBg theme2 ">
						<div class="wrap">
						<div class="page-title-inner fo"> 
						<div class="h1"><h1>Andaman Tour</h1></div>
						<p class="breadcrumb ar uu small"><a href="http://www.mastoursandtravels.co.in/" title="Home">Home</a>
						
													<b class="ffv p2px">&rsaquo;</b><a href="http://www.mastoursandtravels.co.in/tour-packages.htm" title="Tour packages">Tour packages</a>
								
						<b class="ffv p2px">&rsaquo;</b> Andaman Tour</p>
						</div>
						</div>
						</section>
										<section id="middle"><br />
				<div class="wrap packages" id="bodyFormatNT">
				<div class="row1 dt columns12"><!--MIDDLE ROW1 STARTS-->
				<div class="col-2 wideColumn ip ls"><!--MIDDLE ROW1 COL-2 STARTS-->				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					
											<p class="mb5px"><b>Duration :</b> 
						4 Nights / 5 Days 
						</p>
												<p class="mb5px"><b>Destination Covered :</b> Andaman,</p>
												<p class="mb5px"><b>Price (Starting From) :</b> <span class="dif">On Request</span></p>
												<br />
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.mastoursandtravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Andaman Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="buttonBig p10px20px c5px b large dib">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="182348"/>
						</form>
						
												</p>
											</td>
											<td class="p10px vat imgWidth200 w200px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w200px h200px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_19/547313/276351.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_19/547313/276351.jpg"  height="150"  width="150"    alt="Andaman Tour" title="Andaman Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
													<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Tour Detail</p>
								</div>
													
								Our World today, has been invaded and conquered in the search for beauty, to beet into souvenirs and photographs; and we’re led to believe that what iscaptured and to be seen, has been seen already. But we could not be more mistaken. Many have traversed the off trodden paths towards a Vacation of Leisure or Labor. And yet there is world out there - of endless possibilities, of untouched, glorious beauty - just waiting to be explored. We, at Mas Tours, invite you to join us, and view the world through our eyes; to travel the path less travelled, to where the real beauty lies. Come, Let’s Explore the exotic World beauty of Andaman untouched paradises,  A group of pictorial islands surrounded by the emerald green waters of the Bay of Bengal, magical Andaman is an ideal destination for those who want to soak into pristine nature, primeval jungle, mangrove forest & snow-white beaches. Originating from Port Blair this Andaman tour takes you to some of the most stunning islands, Havelock, Baratang and Chidiyatapu beach. Witnessing the setting sun at Radhanagar Beach in Havelock is one of the most delightful moments of this tour. Above all, on the occasion of Veer Savarkar Punyatithi you also visit Cellular Jail, a symbol of India’s freedom struggle and revisit our glorious history in the Sound and Light Show on the jail premises. A treasure trove for the nature, beach and history lovers, Andaman is an ideal holiday spot to spend quality time with your friends and families Andaman and Nicobar have rich history dating back since 800 BC. These Islands are one of the famous Islands in the world and they have the best beaches in India. This must visit destination is a good place for vacationing but let us learn a thing or two about this paradise. The indigenous population called Andamanese and Nicobarese inhabit these Islands. The Islands of Andaman and Nicobar have five indigenous tribes that are still living in these parts like Jharwas (Jarawas), Onges, The Great Andamanese, Shompens, Sentenelese. The common languages they spoke were Onge, Andamanese, Sentinelese, Jarawa and Nicobarese. In addition to the tribal’s of the Island, it was believed that the Andaman Islands were descendants of African slaves that arrived in this Island after a shipwreck while being carried on board on a Portuguese ship, however, most of the anthropologist's sum-up with the fact that they are not Negros but Negritos. For years, the Andaman and Nicobar Islands have seen many faces from India’s First War of Independence that took place in the year 1857 to the Japanese Invasion during the 2nd World War. But with the coming of Indian Independence in the year 1947, these islands Andaman and Nicobar were united with the Indian mainstream. Today, you will find, its past relics, artifacts and ruins around the Island, in the museum of Cellular Jail in Andaman. For ages, the Andamans have been nicknamed as Kala Paani because of its cellular Jail. Earlier, Andaman used to be a prison central to take away the prisoners far from the mainland. Today, this Cellular Jail sources as a prime attraction for tourists.								</div>
								<br />
																<div class="headHr">
					            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
					            </div>
					            
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 1:</b> Andaman
										</p>
										<p class="aj">Arrive At Port Blair in the Morning/afternoon By Flight and Our Representative Will Be Waiting Outside Holding a Placard with Your Name On It. You Will Be Taken to Your Hotel Where You Relax and Rest. Post Lunch Will Proceed to One among the Most Visited Attraction in Andaman Islands, Cellular Jail. this Jail Before India's Independence Hosted the Most Ferocious Prisoners in the Andaman Islands. Today this Jail Stands as a National Memorial. Visit to this Historic Attractions and Know About the Rich History of the Andaman Islands ,Then Move Towards Corbyn's Cove Beach . the Crescent Shaped Coconut Palm Fringed Corbyn's Cove Ideal for Swimming & Bathing. Coastal Drive to this Beach is Awesome; a Stretch of Around 4 Km with An Open Sea Towards Your Left is a Sight to Experience. Take Pit Stops During this Ride to Click Pictures and to Explore the Beauty. Later Proceed to Attend the Enthralling Sound and Light Show At Cellular Jail - Where the Heroic Saga of the Indian Freedom Struggle is Brought Alive. Enacting of Freedom Fighters and Their Struggle for India's Independence is Enacted During this Trip. Post Completion of this Trip, We Drop You Back to Your Hotel.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 2:</b> Andaman
										</p>
										<p class="aj">Visit the Administrative Capital Prior to Independence from Where the Britishers Governed the Entire a & N Islands-ross Island, a Destination for Nature Walk Amidst Friendly Deer’s & Peacocks. Smritika Museum Records the Life of Its Political Prisoners. Explore the Ruins of the Island from Where Britishers Once Governed the Entire Andaman and Nicobar Islands. Then Begin Your Excursion to North Bay - Coral Island with Glass Bottom Boat Ride. Here One Can Explore the Coral Reefs Underwater. the Lighthouse Seen in North Bay Island Trip is the Same that is Seen in the Back of a 20 Rupee Note. Snorkeling, Scuba Diving and Sea Walk Can Be Done Here as Well. Note: There is No Bottled Water Sold On Ross Island and Hence We Would Recommend You to Carry Bottled Water with You and Cold Filtered Water is Available At Ross Island Ticket Counter At No Cost. Ross Island is Closed On Wednesday. if Your Tour Falls On Wednesday We Would Interchange It with the Previous Days Plan.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 3:</b> Andaman
										</p>
										<p class="aj">Today We Depart to Andaman Islands Most Amazing Destination, Havelock Island. the Destination is Rated as the Best Island in India. Depart from Port Blair to Havelock Island in a Ferry. Upon Reaching Havelock, Our Representative Attends You and Will Drop You At Your Hotel. Rest and Relax in a Beachside Resort. We At Experience Andamans Only Share Beach Side Resorts for Exquisite Experiences. Later We Begin Our Journey to One among Asia's Best Beach, Radhanagar Beach Same Day Return to Port Blair Explore this White Sand Beach and Bask in the Beauty of this Natural Wonder. Post this We Drop You Back to Your Resort Where You Relax and Unwind.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 4:</b> Port Blair
										</p>
										<p class="aj">Depart from Port Blair to Baratang Island (200 Kms) By Road Through the Dense Tropical Forest and Jarawa Tribal Reserve. Often You Might See a Member of the Jarawa Tribe While Passing Through the Tribal Reserve. On Your Journey You Will Take the Route of Andaman Grand Trunk Road to Baratang Where You Can Visit a Short Trip to Lime Stone Cave and Return Back to Port Blair.</p>
										</td>
										</tr>
										</table>					
										</div>
										<div class="data">
										<table class="w100 formTable bdr0 imgWidth">
										<tr>
										<td class="p10px vat">
										<p class="b large mb5px"><b class="dif">Day 5:</b> Port Blair
										</p>
										<p class="aj">Return Home with Sweet Memories of These Mesmerizing Islands.</p>
										</td>
										</tr>
										</table>					
										</div>								<br />
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Inclusions</p>
								</div>
												
								<ul>
																			<li>MAP (Room + Breakfast + Lunch/Dinner)</li>
																						<li>Hotel</li>
																						<li>Meals</li>
																						<li>Sightseeing</li>
																			</ul>
								</div>
																<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Payments Terms</p>
								</div>
								
								<ul><li>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.</li></ul>					
								</div>
														<div class="data mt20px p15px">            
						<div class="mb7px"> 
						<p class="b xlarge mb10px dib">Cancellation &amp; Refund Policy</p>
						</div>
								
						<ul><li>* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date.</li></ul>			
						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.mastoursandtravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Andaman Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="182348"/>
						</form>
						</div>
						
										</div>
				<div class="col-3 thinColumn"><!--MIDDLE ROW1 COL-1 STARTS-->
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by City</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-port-blair.htm" title="Packages in Port Blair">Port Blair</a> <b class="alpha50 bn small">(42)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-havelock.htm" title="Packages in Havelock">Havelock</a> <b class="alpha50 bn small">(41)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-chennai.htm" title="Packages in Chennai">Chennai</a> <b class="alpha50 bn small">(5)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-genting.htm" title="Packages in Genting">Genting</a> <b class="alpha50 bn small">(5)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-mumbai.htm" title="Packages in Mumbai">Mumbai</a> <b class="alpha50 bn small">(4)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-kolkata.htm" title="Packages in Kolkata">Kolkata</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-shirdi.htm" title="Packages in Shirdi">Shirdi</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-ohio.htm" title="Packages in Ohio">Ohio</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-sangli.htm" title="Packages in Sangli">Sangli</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-aizawl.htm" title="Packages in Aizawl">Aizawl</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-pune.htm" title="Packages in Pune">Pune</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-agartala.htm" title="Packages in Agartala">Agartala</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-hyderabad.htm" title="Packages in Hyderabad">Hyderabad</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-massachusetts.htm" title="Packages in Massachusetts">Massachusetts</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-satara.htm" title="Packages in Satara">Satara</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-new-delhi.htm" title="Packages in New Delhi">New Delhi</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-ranchi.htm" title="Packages in Ranchi">Ranchi</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-panchgani.htm" title="Packages in Panchgani">Panchgani</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-dimapur.htm" title="Packages in Dimapur">Dimapur</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-mahabaleshwar.htm" title="Packages in Mahabaleshwar">Mahabaleshwar</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.mastoursandtravels.co.in/packages-in-imphal.htm" title="Packages in Imphal">Imphal</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="uu db ar"><a class="showallspan" data-target="show" href="javascript:void(0)" >View More</a></span>
										
				</div>
				</div>
				</div>
				</div>
				
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by Category</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/beach-islands-holidays-catid.htm" title="Beach and Islands Packages">Beach and Islands</a> <b class="alpha50 bn small">(47)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/national-parks-holidays-catid.htm" title="National Parks Packages">National Parks</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/wildlife-nature-holidays-catid.htm" title="Wildlife and Nature Packages">Wildlife and Nature</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/snorkeling-holidays-catid.htm" title="Snorkeling Packages">Snorkeling</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/parasailing-holidays-catid.htm" title="Parasailing Packages">Parasailing</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/scuba-diving-holidays-catid.htm" title="Scuba Diving Packages">Scuba Diving</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/camping-holidays-catid.htm" title="Camping Packages">Camping</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.mastoursandtravels.co.in/boating-holidays-catid.htm" title="Boating Packages">Boating</a> <b class="alpha50 bn small">(1)</b></span>
						
				</div>
				</div>
				</div>
				</div>
				
				
				</div>
				</div>
				
								
				</div>
				</section>
				
				<script>
					window.addEventListener("DOMContentLoaded", function(){
						jQuery(document).on("click", ".showallspan", function(){
							if(jQuery(this).attr("data-target") === 'show'){
								jQuery(this).text("View Less");
								jQuery(this).attr("data-target", "hide");
								jQuery(this).closest("div").find(".spanlist").removeClass("dn");
							}else{
								jQuery(this).text("View More");
								jQuery(this).attr("data-target", "show");
								jQuery(this).closest("div").find(".spanlist").addClass("dn");
							}
						});
					});
				</script>
				";i:1;s:51:"Book Andaman Tour - 4 Nights / 5 Days Tour Packages";i:2;s:91:"book andaman tour - 4 nights / 5 days tour packages,  tour packages, andaman, tour packages";i:3;s:129:"Mas Tours and Travels offers Andaman Tour - 4 Nights / 5 Days tour package, budget  tour packages for Andaman, at exciting price.";i:4;s:3527:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Andaman,"        
		                 },
		      "description": "Our World today, has been invaded and conquered in the search for beauty, to beet into souvenirs and photographs; and we’re led to believe that what iscaptured and to be seen, has been seen already. But we could not be more mistaken. Many have traversed the off trodden paths towards a Vacation of Leisure or Labor. And yet there is world out there - of endless possibilities, of untouched, glorious beauty - just waiting to be explored. We, at Mas Tours, invite you to join us, and view the world through our eyes; to travel the path less travelled, to where the real beauty lies. Come, Let’s Explore the exotic World beauty of Andaman untouched paradises,  A group of pictorial islands surrounded by the emerald green waters of the Bay of Bengal, magical Andaman is an ideal destination for those who want to soak into pristine nature, primeval jungle, mangrove forest & snow-white beaches. Originating from Port Blair this Andaman tour takes you to some of the most stunning islands, Havelock, Baratang and Chidiyatapu beach. Witnessing the setting sun at Radhanagar Beach in Havelock is one of the most delightful moments of this tour. Above all, on the occasion of Veer Savarkar Punyatithi you also visit Cellular Jail, a symbol of India’s freedom struggle and revisit our glorious history in the Sound and Light Show on the jail premises. A treasure trove for the nature, beach and history lovers, Andaman is an ideal holiday spot to spend quality time with your friends and families Andaman and Nicobar have rich history dating back since 800 BC. These Islands are one of the famous Islands in the world and they have the best beaches in India. This must visit destination is a good place for vacationing but let us learn a thing or two about this paradise. The indigenous population called Andamanese and Nicobarese inhabit these Islands. The Islands of Andaman and Nicobar have five indigenous tribes that are still living in these parts like Jharwas (Jarawas), Onges, The Great Andamanese, Shompens, Sentenelese. The common languages they spoke were Onge, Andamanese, Sentinelese, Jarawa and Nicobarese. In addition to the tribal’s of the Island, it was believed that the Andaman Islands were descendants of African slaves that arrived in this Island after a shipwreck while being carried on board on a Portuguese ship, however, most of the anthropologist's sum-up with the fact that they are not Negros but Negritos. For years, the Andaman and Nicobar Islands have seen many faces from India’s First War of Independence that took place in the year 1857 to the Japanese Invasion during the 2nd World War. But with the coming of Indian Independence in the year 1947, these islands Andaman and Nicobar were united with the Indian mainstream. Today, you will find, its past relics, artifacts and ruins around the Island, in the museum of Cellular Jail in Andaman. For ages, the Andamans have been nicknamed as Kala Paani because of its cellular Jail. Earlier, Andaman used to be a prison central to take away the prisoners far from the mainland. Today, this Cellular Jail sources as a prime attraction for tourists.",
		      "name": "Andaman Tour",
		      "telephone": "+91-9567775818"
		    }
		    </script>
			";i:5;N;}